{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XGBoost Parameter Tuning for Otto Dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先 import 必要的模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# path to where the data lies\n",
    "#dpath = '/Users/qing/desktop/XGBoost/data/'\n",
    "#dpath = './data/'\n",
    "train = pd.read_csv(\"RentListingInquries_FE_train.csv\")\n",
    "#train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Variable Identification"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "选择该数据集是因为的数据特征单一，我们可以在特征工程方面少做些工作，集中精力放在参数调优上"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = train['interest_level']\n",
    "train = train.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "各类样本不均衡，交叉验证是采用StratifiedKFold，在每折采样时各类样本按比例采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "再次调整弱分类器数目"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def modelfit(alg, X_train, y_train, useTrainCV=True, cv_folds=None, early_stopping_rounds=100):\n",
    "    \n",
    "    if useTrainCV:\n",
    "        xgb_param = alg.get_xgb_params()\n",
    "        xgb_param['num_class'] = 3\n",
    "        \n",
    "        xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "        cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "                         metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "        \n",
    "        n_estimators = cvresult.shape[0]\n",
    "        alg.set_params(n_estimators = n_estimators)\n",
    "        \n",
    "        print(cvresult)\n",
    "        #result = pd.DataFrame(cvresult)   #cv缺省返回结果为DataFrame\n",
    "        #result.to_csv('my_preds.csv', index_label = 'n_estimators')\n",
    "        cvresult.to_csv('my_preds2_3_255.csv', index_label = 'n_estimators')\n",
    "        \n",
    "        # plot\n",
    "        test_means = cvresult['test-mlogloss-mean']\n",
    "        test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "        train_means = cvresult['train-mlogloss-mean']\n",
    "        train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "        x_axis = range(0, n_estimators)\n",
    "        pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "        pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "        pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "        pyplot.xlabel( 'n_estimators' )\n",
    "        pyplot.ylabel( 'Log Loss' )\n",
    "        pyplot.savefig( 'n_estimators2_3_255.png' )  ###之前猜测最佳estimators为255，其实是251\n",
    "    \n",
    "    #Fit the algorithm on the data\n",
    "    alg.fit(X_train, y_train, eval_metric='mlogloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    train_predprob = alg.predict_proba(X_train)\n",
    "    logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "        \n",
    "    #Print model report:\n",
    "    print (\"logloss of train :\" )\n",
    "    print (logloss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     test-mlogloss-mean  test-mlogloss-std  train-mlogloss-mean  \\\n",
      "0              1.039782           0.000337             1.039319   \n",
      "1              0.990464           0.001042             0.989400   \n",
      "2              0.948501           0.001001             0.947041   \n",
      "3              0.911928           0.001249             0.910015   \n",
      "4              0.880505           0.001322             0.878271   \n",
      "5              0.853140           0.001196             0.850538   \n",
      "6              0.829167           0.001274             0.826208   \n",
      "7              0.808085           0.001417             0.804755   \n",
      "8              0.789656           0.001514             0.785905   \n",
      "9              0.773429           0.001233             0.769249   \n",
      "10             0.758942           0.001363             0.754430   \n",
      "11             0.745977           0.001696             0.741157   \n",
      "12             0.734584           0.001713             0.729319   \n",
      "13             0.724309           0.001949             0.718667   \n",
      "14             0.715163           0.001791             0.709123   \n",
      "15             0.706797           0.001759             0.700451   \n",
      "16             0.699682           0.001662             0.692961   \n",
      "17             0.693098           0.001776             0.686054   \n",
      "18             0.687377           0.001800             0.679943   \n",
      "19             0.681989           0.001888             0.674162   \n",
      "20             0.677091           0.001878             0.668949   \n",
      "21             0.672756           0.001881             0.664259   \n",
      "22             0.668580           0.001858             0.659824   \n",
      "23             0.664940           0.001804             0.655839   \n",
      "24             0.661450           0.001966             0.651994   \n",
      "25             0.658257           0.002018             0.648400   \n",
      "26             0.655422           0.002153             0.645253   \n",
      "27             0.652769           0.002275             0.642182   \n",
      "28             0.650422           0.002339             0.639467   \n",
      "29             0.648151           0.002398             0.636789   \n",
      "..                  ...                ...                  ...   \n",
      "225            0.588749           0.003708             0.520236   \n",
      "226            0.588745           0.003695             0.519954   \n",
      "227            0.588738           0.003715             0.519670   \n",
      "228            0.588728           0.003724             0.519374   \n",
      "229            0.588712           0.003704             0.519089   \n",
      "230            0.588697           0.003707             0.518785   \n",
      "231            0.588669           0.003674             0.518486   \n",
      "232            0.588635           0.003691             0.518216   \n",
      "233            0.588617           0.003690             0.517960   \n",
      "234            0.588577           0.003635             0.517651   \n",
      "235            0.588603           0.003618             0.517361   \n",
      "236            0.588564           0.003657             0.517103   \n",
      "237            0.588553           0.003699             0.516792   \n",
      "238            0.588499           0.003677             0.516536   \n",
      "239            0.588521           0.003710             0.516253   \n",
      "240            0.588492           0.003703             0.515997   \n",
      "241            0.588445           0.003679             0.515737   \n",
      "242            0.588348           0.003715             0.515453   \n",
      "243            0.588352           0.003770             0.515202   \n",
      "244            0.588317           0.003785             0.514911   \n",
      "245            0.588293           0.003768             0.514663   \n",
      "246            0.588225           0.003811             0.514436   \n",
      "247            0.588245           0.003929             0.514189   \n",
      "248            0.588218           0.003878             0.513892   \n",
      "249            0.588235           0.003808             0.513652   \n",
      "250            0.588131           0.003852             0.513385   \n",
      "251            0.588056           0.003899             0.513048   \n",
      "252            0.588100           0.003885             0.512797   \n",
      "253            0.588193           0.003894             0.512527   \n",
      "254            0.588211           0.003826             0.512258   \n",
      "\n",
      "     train-mlogloss-std  \n",
      "0              0.000505  \n",
      "1              0.000739  \n",
      "2              0.000545  \n",
      "3              0.000356  \n",
      "4              0.000355  \n",
      "5              0.000284  \n",
      "6              0.000615  \n",
      "7              0.000747  \n",
      "8              0.000696  \n",
      "9              0.000805  \n",
      "10             0.000800  \n",
      "11             0.000505  \n",
      "12             0.000506  \n",
      "13             0.000433  \n",
      "14             0.000564  \n",
      "15             0.000558  \n",
      "16             0.000709  \n",
      "17             0.000602  \n",
      "18             0.000689  \n",
      "19             0.000739  \n",
      "20             0.000871  \n",
      "21             0.000913  \n",
      "22             0.000906  \n",
      "23             0.001059  \n",
      "24             0.001080  \n",
      "25             0.001132  \n",
      "26             0.000943  \n",
      "27             0.000844  \n",
      "28             0.000735  \n",
      "29             0.000611  \n",
      "..                  ...  \n",
      "225            0.001209  \n",
      "226            0.001217  \n",
      "227            0.001238  \n",
      "228            0.001213  \n",
      "229            0.001192  \n",
      "230            0.001140  \n",
      "231            0.001123  \n",
      "232            0.001138  \n",
      "233            0.001091  \n",
      "234            0.001063  \n",
      "235            0.001044  \n",
      "236            0.001018  \n",
      "237            0.001023  \n",
      "238            0.001039  \n",
      "239            0.001089  \n",
      "240            0.001071  \n",
      "241            0.001072  \n",
      "242            0.001034  \n",
      "243            0.000987  \n",
      "244            0.001008  \n",
      "245            0.001058  \n",
      "246            0.001053  \n",
      "247            0.001066  \n",
      "248            0.001019  \n",
      "249            0.001025  \n",
      "250            0.001003  \n",
      "251            0.000920  \n",
      "252            0.000880  \n",
      "253            0.000827  \n",
      "254            0.000765  \n",
      "\n",
      "[255 rows x 4 columns]\n",
      "logloss of train :\n",
      "0.522524916176\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n266vL6MfAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f217a48ba20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#调整max_depth和min_child_weight之后再次调整n_estimators(6,4)\n",
    "xgb2_3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=251,  #数值大没关系，cv会自动返回合适的n_estimators ###之前猜测最佳estimators为255，其实是251\n",
    "        max_depth=5,\n",
    "        min_child_weight=5,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb2_3, X_train, y_train, cv_folds = kfold)\n",
    "#from sklearn.model_selection import cross_val_score\n",
    "#results = cross_val_score(xgb2_3, X_train, y_train, metrics='mlogloss', cv=kfold)\n",
    "#print results\n",
    "#print(\"CV logloss: %.2f%% (%.2f%%)\" % (results.mean()*100, results.std()*100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1oAAANGCAYAAADktv9+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XeYFFXWx/HfYcg5gwiIKAYwIEEw\ngjmtOWDO7+7qrnnNrqJiWnPCnF3XnDECBpIBUIIgYAAJknMcYO77R9VU1TQzw4Serg7fz/P047ld\n1dWnhwHnzL33lDnnBAAAAABInmpxJwAAAAAA2YZCCwAAAACSjEILAAAAAJKMQgsAAAAAkoxCCwAA\nAACSjEILAAAAAJKMQgsAAAAAkoxCCwAAAACSjEILAAAAAJKMQgtAzjCzZ81snZntXMyxa8zMmdmR\nCc839I99a2ZLzWy9mc0zs0/M7FQzqxU5t4N/jehjuZmNM7NLzSwvFZ+zNGZ2oZmdHXcelWFmdc2s\nv5n1LebY2f7XvUMMebXx8+qa6veOk5k9b2Yr485DkvyvvzOz5nHnAgAUWgByyaWS5kp6wcxqFD7p\nF143S3reOfdB5PlOkn6QdL2k4ZLOlLS/pIskzZb0rKQbinmfhyXt4T9OkjRC0v2S/pP8j1RuF0o6\nO+4kKqmupJsk9S3m2CB5X/c/U5mQr428vHKq0AIAFK963AkAQKo455ab2XmSPpNXIN3kF1wvSZon\nrxCTJJlZdUnvSmoqaXfn3OSEy71uZrdI2q2Yt/rDOfdNZPyJme0k6RRJVyTtA2ETzrkFkhbEnUcy\nmVld59zquPMAAJQPM1oAcopzbrCkxyVdZ2bdJfWXtKuk85xzyyKnHiups6TbiimyCq81wzn3bhnf\nepmk9dEnzKyamV1lZj/7Sxrnm9mLZtY28cVmdq6/BHGtmS02s3fMbMeEczqa2atmNse/3jwzG1K4\nlM3MpkvqIqlPZGnj9NKS9s95xMzOMLPJZrbaz+MvZfzc0WvVNLMbIp93gZk9Z2YtEs7b38y+NLNF\nZrbGzP4ws7f8JYMdFBZSN0U+x/P+azdZOuhfa6KZ7WFmI/1rTjezc/zjR5jZWP+zTTCzQxPy2dbP\nc5p/zmwz+yC6BNVfxvi9P3wuklf/yDlHmdko/xorzOxzM9sj4b0Kl751M7M3zWyJpF/9Y6X++Zbw\nNb/Uv962xRy7y8zyC5fZmdluZvah/324zn+fQcV9P1aEme3t57vC/xqMNLMjSjhvlP+9PtvMbjWz\n8xP/XCuZy05m9p6ZLfHf50czOyvhnGr+9+sU/3tmqZmNN7NLIue0MLMnzWxm5Ht6hJkdmIw8AWQ2\nZrQA5KIrJR0i6U1J7SQ97pz7POGcg/z/vl+B61czb0ZMkhpJOlrSoZLuSjjvMUl/lfSIpA8ldZB0\nq6S+ZtbNObdQkszsWkm3S/qfpGslNZNXII4ys57OuWn+9T6SlCfpKkl/SGouaU9Jjf3jx/qfeZm8\nJYSStK4Mn+cIST0l3ShppX/9d8xse+fcb2V4vcysmqT3JO0jbwnlSElbyVuy+aWZ9XDOrfF/kB4k\naZikcyUtlbSlvK9fTXlLAg+V9ImkZyQ97b/F5maxWkt6zn/vWfKWfz5rZu0knSDv67vM/4zvmllH\n59wc/7VtJC2SdI3/Pk0lnSXpWzPbzTk3RdJYSef47zHA/wzy30tmdqqk/8qbTT1FUi3/6/ilmR3g\nnBuekO/bkl6V90uBev5zm/vzLc7L8r7vzlZkmat5+wVPl/SBc26hmdWT9Lmk3yX9Q94Mb2tJ+0lq\nUMr1y8TM+vjXHy/pPHnfdxdK+sDMTnHOveaft4t/3lR5X+PVkv7u55oUZra9vO+/+ZIulvdne7qk\n582slXOucInvVfL+ng2Q9LWkGpJ2UNGv90uSuslbXjzVP9ZN3t9RALnOOceDBw8eOfeQ98Ouk/eD\ne/1ijn/sH6+V8LzJ+yVV4SMvcqyD/5riHs8lnLuD//yjCdff3X/+Nn/cWN4Pm4MSzmsnaa2k//rj\nZv7rLtnM554o6ctyfJ2cvH1tDSLPtZK0UdI15bjOyf61jkt4vof//AX++Hh/vGsp12run9O/mGNn\n+8c6RJ770n+ue+S5ppI2+F/bNpHnd/XPvaiU98+T90P3VEn3FfNZzk44v5q8PX3jJVWLPF9fXkEz\nIvJcf/8aNydco0x/viXk+5akmQnvfZh/vb/44+7++OgKXP95SSs3c84o/7PWjzyXJ2mCn5v5z70u\nr5hvnvD1+ynxz7WE9yn8+jUv5Zz/+X932iU8/5GkVZIa+eMPJP2wmfdbIen+8n7NePDgkRsPlg4C\nyDn+7MpFkgoktZT3w3VZXSJvCWDhY1wx5zwobwaop7wZgevkNcX4X+Sc/fz/Ph99oXPuO0mTJR3g\nP7WHpDrFnDdT0tDIeYvlLTG70swu95eBJevf+C+ccysi7z1P3mzAVuW4xl/kzU59YGbVCx+SfpRX\nyPX1z/tRUr6kJ83sLDPrmIwPIOlP59yYwoFzbrG8z/CjC2euJO9rL0U+m5/rdWY2yczy5RVo+ZI6\nSSqyfLME28ubFXvJOVcQyWGlvCKot5nVTXjNWwnjyvz5PiepraTocrZz5H3dP/bHv0haIukuM/u7\nmXUu47U3y58t6yXpTf8zS5KccxvlzQi1lfc1kqQ+koY6fzbXP69AXgGWLPtLGuL/HYp6Xl6jlcLl\nnN9J2tXMBprZIWbWsJhrfSfpbH+JYW+LNNkBAAotALnoX/J+mDpV0jR5S8jqJJzzh//fxGLiFYVF\n1NgSrj/LOTfaf3zpnLtD3pLAE83sEP+cwqVFxXXHmxM5XqbznHNOXtH1qbwlT2MlLTCzh8yssku/\nFhXz3Dp5BWBZtZI3O5evooXqenlL1JpLknPuV3kFwXxJj0r61cx+je6LqaDFxTyXn/i8cy7fD2tH\nnr5P3p/fu5KOlFc09JRXZJfla7C5P8NqkpokPF/k3Er++X7sX69wT1oTSUdJetEvduS8/Yl95BW6\nt0v6yd+jdXMSiocm8maCS/r8UtHv93nFnFfccxXVrIy53CHv34re8r6Gi/w9Zj0ir+kn6QVJ58ub\ntVts3j7L1knMF0CGotACkFP839TfIu+HzNfkLTXbVtJtCacW7tk6Kvqkc25+YRElb9lQWY33/1s4\ne1ZYvGxRzLltJC0s53lyXnOO85xzreXNENwvbx/M3eXIs6oslPdZepbwKNwzJufcMOfckfL2t/WW\n9wPsA2Z2cqqT9p0u7/vlOufcp8657/w//7Leq2lzf4YF8maTolziiRX9843MHB1jZo3l/YKhlryZ\nruh5E5xzJ8srNLpKek3enrXKdspcIu8zlvT5paLf762KOS+ZhcuisuTinNvgnLvPOddN3lLTU+Qt\n2f20cAbSObfQOXepc66DvF/KXCvpOCXMQAPITRRaAHKGv1TtBXk/SF0iSc5rw36fpEvMbK/I6e9I\nmiSvO+EOSXj7ws5w8/3/DvX/W2STv5n1lLccbYj/1ChJa4o5r638JVDFvZlzbqpzboC8PTDdIofK\nOxOVLB/K+wE+LzLbF31MSXyBc26jc+5bec0ZpPBzFDbwSNXncEpoGuJ3y9sy4byS8poib4/WqWZm\nkWvUk7cnbZQrZ/v2Uv58S/KcvFm6U+T9cmGUc+7nEq7tnHPjnHOXyVvuWZbrl5brKknfSjouOnPs\nL308XV7DkKn+019J2t8iNxz2zzuxMjkkGOK/R5uE58+Ut2fvm8QXOOeWOufelDfL2lTefszEc/5w\nzj0i75c0lfqaAcgOdB0EkEuuldew4DDn3NLI8/+WtyTsWTPr6pxb45zbaGbHyFuq9Z2ZPSWvqcIS\neUvgesmbnSqu9Xt7M+vtx/XkLVO8VtIMed3k5JybYmZPSrrIzArkLU3qIG+J2kx5sxVyzi01s1sl\n3W5mL8rb59VM3o1x18rr2lfYre0RSW/IWw6ZL68Q20XSnZHcJkg62cz6SfpN0lrn3ITyfBEr6FVJ\np0n6yMwelLe3Zb28/Tn7SXrPOfeOmf3dz3uQvOWbteV1H5SkwZLknFthZjMkHW1mQ+Qt/1vonJte\nRbl/KG8fzs/yZia7y+tcOSvhvF/lFcWnmdlkeU0d5jjn5pjZVfK6Dn5oZk/Im1G6Ut730jWbS6Ac\nf77Fcs79bGaj5H0ftpPX7TJ6/b/Imx17V973hcmbmWmscHa3NHlmdkIxz69yzn3sv+/nkr4ws3v8\n/C+UtJOkU/ylkZI3s3ykpCFmdpu8r+ffFXZeLFDZHGlmm8w4+8XSzfL2DH5h3r3wFsv73jxC0lX+\nMkqZ2QfymseMltdtcit599qbIWmamTWS9IW85cQ/y5vh7imvK+bbZcwTQDaLuxsHDx48eKTiIa8o\nypf0ZAnHe8vrpHdfwvMN5f2Q+J3Ce2HNk9em+0JJdSPndtCm3QbXyJvRuF9S64RrV5O332aKn9sC\n+c0BisnvPHl7gtbJm2V4V1LnyPGW8mYtCn/AX+Gff6mKdjvcSl7xuNzPb/pmvm5O0iPFPD9d0vPl\n/DOoLm8Z2o/+12WFn+/jkraN/Dm87V9/rbzZxy8lHZlwrQPk7VNa6+f4vP/82Sq+6+DEEj7Dh5v7\nzPKKjaf9P/dV8lrP7+1f98uE157sf6Z8JXRGlNfm/xv/s6+UVzjumfD6/iqma15Z/3w38/X/P//a\nqyU1TDi2vbyC4Rf/+FJ5s1BnleG6z6vkbpvTI+ftLW82aaX/HqPkdz1MuN7e/tdprby9VP+R9/fE\nye8IWEou/UvJxUXO20nerRuWyvs79aM27RZ5uaQR8v5erpNXYD0taSv/eC15t2gYJ+/fhtXyCq7+\nivy7wIMHj9x9FLZTBQAASEtm9pm84nm7uHMBgLJi6SAAAEgbZnafpB/kLaFtKm9Z30HyZnUBIGNQ\naAEAKsVvMlKaAhe5fxSwGXnyOoO2lrfkb5KkM5xzL8eaFQCUE0sHAQAVZmYdJP2+mdNuds71r/Jk\nAABII8xoAQAqY468TmubOwcAgJzCjBYAAAAAJBk3LAYAAACAJGPpYDHMzCS1kXefEgAAAAC5rYG8\nm9CXeTkghVbx2kiaFXcSAAAAANJGW0mzy3oyhVbxVkjSzJkz1bBhw7hzAQAAABCT5cuXq127dlI5\nV7tRaJWiYcOGFFoAAAAAyo1mGAAAAACQZBRaAAAAAJBkFFoAAAAAkGQUWgAAAACQZBRaAAAAAJBk\nFFoAAAAAkGQUWgAAAACQZBRaAAAAAJBkFFoAAAAAkGQUWgAAAACQZBRaAAAAAJBkFFoAAAAAkGQU\nWgAAAACQZBRaAAAAAJBkFFoAAAAAkGQUWgAAAACQZBRaAAAAAJBkFFoAAAAAkGQUWgAAAACQZBRa\nAAAAAJBkFFoAAAAAkGQUWgAAAACQZBRaAAAAAJBkFFoAAAAAkGQUWgAAAACQZBRaAAAAAJBkFFoA\nAAAAkGQUWgAAAACQZBRaAAAAAJBkFFoAAAAAkGQUWgAAAACQZBRaaWx1/gZ1uGaQOlwzSKvzN8Sd\nDgAAAIAyotACAAAAgCSj0AIAAACAJKPQAgAAAIAko9DKIOzZAgAAADIDhRYAAAAAJBmFFgAAAAAk\nGYUWAAAAACQZhVaGYr8WAAAAkL4otAAAAAAgySi0AAAAACDJKLQAAAAAIMkotLIEe7YAAACA9EGh\nBQAAAABJRqEFAAAAAElGoQUAAAAASZYWhZaZXWhmv5vZWjMbY2b7bOb8xmb2qJn96b9mspkdHjl+\nrZl9b2YrzGy+mb1rZttX/SepOhs2FsSdAgAAAIAyir3QMrN+kh6QdJuk3SQNk/SxmbUv4fyakj6X\n1EHSCZK2l/R/kmZHTusj6VFJvSUdJKm6pM/MrF7VfIqqUVDggvjBIdPK/DoaYwAAAADxqh53ApIu\nl/SMc+5pf3ypmR0i6QJJ1xZz/rmSmkra0zm33n9uRvQE59yh0bGZnSNpvqTukr5OYu5Vqlo1C+Jn\nhk/Xrm0bx5gNAAAAgLKKdUbLn53qLumzhEOfSdqzhJcdJWmUpEfNbJ6ZTTSz68wsr5S3auT/d3EJ\nedQys4aFD0kNyv4pUufadybEnQIAAACAMoh76WBzSXmS5iU8P09S6xJe01HeksE8SYdLGiDpCknX\nF3eymZmk+yQNd85NLOGa10paFnnMKvtHSI1u7Rtr1bqNcacBAAAAoAziLrQKuYSxFfNcoWrylgH+\n1Tk3xjn3qrz9XReUcP4jknaRdEop73+HvFmvwkfbMuadMvf366pm9WtW6LXs2QIAAABSK+5Ca6Gk\njdp09qqlNp3lKvSnpKnOuej0zmRJrf2liAEze1jeUsP9nHMlzlI559Y555YXPiStKOfnqHItGtTS\nfSfuGowHTyrpywMAAAAgbrEWWs65fElj5HUGjDpI0sgSXjZC0rZmFs19O0l/+teTeR6RdJyk/Z1z\nvyc383j03LppEN/x8ZQYMwEAAABQmrhntCRv/9T5Znaume1oZvdLai/pcUkysxfN7I7I+Y9Jaibp\nQTPbzsyOkHSdvHbuhR6VdLqkUyWtMLPW/qNOKj5QKixbs37zJwEAAACIRezt3Z1zr5lZM0k3StpC\n0kRJhzvnClu2t5dUEDl/ppkdLOl+SePl3T/rQUl3RS5buF/ry4S3O0fS80n+CLGomVdN+RW4ifHq\n/A3qfOOnkqRJtxyiujVj/xYAAAAAsk5a/JTtnBsoaWAJx/oW89woeTcjLul6VtKxbHHhfh31wOBf\nJEnT5q1Qp1Zp2ZEeAAAAyEnpsHQQFXBqr/ZBfO4Lo/XbgpUxZgMAAAAgikIrQ1WzcNJu0cp8nfP8\n6BizAQAAABBFoZUFtmtVXwtWrIs7DQAAAAA+Cq0s8MxZPbRNi3rBeE3+xlLOLoqbGQMAAADJR6GV\nBZrVr6Vnz+4ZjO/7fGqM2QAAAACg0MoSLRrUCuJ3fpgTYyYAAAAAKLQAAAAAIMkotLJQ5zYNg3hj\ngSvz69ivBQAAACQHhVYWuu2YLkHMfi0AAAAg9arHnQBKVrdmdU2/84hgXNZZpnZN6wbxcyOma/tW\nDZKeGwAAAICSMaOVA258/6dyv4ZlhAAAAEDFUWhluf22b6H8DQVxpwEAAADkFAqtLHfX8bsUuZnx\nirXrY8wGAAAAyA0UWhmkcM/W9DuPUN2aZdteV792dT1y6m7B+NJXx1VVegAAAAB8FFo5YKtm4YzW\nuFnLKnQN9mwBAAAAZUehlWPq1MgL4oJy3GMLAAAAQNlRaOWYe07cJYifGvZ7jJkAAAAA2YtCK8f0\n6tg0iB8eOk2jpy8u9zVYRggAAACUjkIrhxU46V9vjI87DQAAACDrlK11HdJOYQfCQhWZWerYop5+\nW7AqmWkBAAAAEDNaOe3+fl1VuwbfAgAAAECy8VN2DuvUsr5uOrJzMH5+5PQKXYc9WwAAAEBRFFo5\n7uiuWwbxI0N/jTETAAAAIHuwRytLRPdsMasEAAAAxIsZLQRO7dUuiIdPW1iha7CMEAAAAKDQQsRl\nB3YK4mvenhBjJgAAAEBmo9BCwMyCeO36ghgzAQAAADIbe7SyUDLusbVdq/qaOm+lJGnp6nw1rlsz\nafkBAAAA2Y4ZLRTrwZO7BvEFL4+t8H4r9mwBAAAgF1FooVgtGtQK4nGzlunSV3+MMRsAAAAgs1Bo\nYbPq1MjT8F8WxZ0GAAAAkDEotHJA4Z6t6Xceobo1y78t78GTu6p6XtgowzlXoTxYRggAAIBcQaGF\nzdq7U3PdddzOwfg/n0yJMRsAAAAg/VFooUwO23mLIH5jzOwYMwEAAADSH4UWyq1auIpQBQUVW0Yo\nsZQQAAAA2YtCK8dUdr+WJN1ydJcgvuG9idpYiWILAAAAyEYUWii3Q3dqHcTv/jBH178zMcZsAAAA\ngPRDoYVKyatmen/cnEpfh2WEAAAAyCYUWqiU+07aVdUjm7Y2FBTEmA0AAACQHii0clxl92wd1LmV\n7u/XNRhf/85PyUwPAAAAyEgUWqi0A3ZsGcRDJs9PyjVZSggAAIBMRqGFpKqZF35L5W9gGSEAAABy\nE4UWkurek3YJ4gteHqtV6yo/G8XsFgAAADJNxW6khKxUuF9LUoULmj22aRbEo35bpPNeGJ2U3AAA\nAIBMwowWqkyjOjU0ftayuNMAAAAAUo5CC1XmxfN2V8sGtYLxklX5lb4mywgBAACQCSi0UGU6tayv\n/57fKxhf/OqPMWYDAAAApA57tFCs6H4tqeJ7trZsUieIJ/+5otJ5JVqdv0Gdb/xUkjTplkMqdC8w\nAAAAINmY0ULK1K2ZF8S0fgcAAEA2o9BCytwXaf1+9nPfa/7ytUm9Pvu3AAAAkC4otJAyPTo0DeIf\nZy7VCY+PijEbAAAAoOqwoQVlkox7bEVt16q+ps5bWenrAAAAAOmIGS3E4pX/66XDdmodjB8a8kvS\n34OlhAAAAIgLhRZiUbdmdd1zYrhn68VRM2LMBgAAAEgulg6i3JLV+t3Mgrh6NdOGAidJmrVktdo2\nqVu5JBPQBh4AAACpxIwW0sIjp3YN4mMeHak3Rs+MMRsAAACgcii0kBaiHQlX52/UTe9PqtL3Y/8W\nAAAAqhKFFtLOlYdsr5rVw2/NTybOjTEbAAAAoPzYqIJKS3br93P26qB9OjXXUY+MkCTd8O5Plb5m\nadi/BQAAgGRjRgtpaduW9YM4r1rYNGP6olVxpAMAAACUC4UW0t4L5/QI4r+9OLbK34/9WwAAAKgs\n1kghqZLV+j1qhy0aBvGiVfmVvl55sKwQAAAAFcGMFjLKjls0COLBk+bJORdjNgAAAEDxKLSQUQae\ntlsQX/zqjzr1qW9T+v4sKwQAAEBZsA4KVSrZHQkb1K4RxHVq5GncrGXBeO6ytZW+PgAAAJAMzGgh\nY31y6T46uWe7YNzviW9S+v7MbgEAAKAkFFrIWC0a1NKNR3YOxqvyNwbxtPkr40gJAAAAkEShhSzy\nr0O2C+LjB47U3Z9OSdl7M7sFAACAKPZoIWWqovV71Mk92+meT6dKkjYUOD03YnpwrIDuhAAAAEgh\nZrSQlR47rZvaNqkTjM945vuUvj8zXAAAALmNGS3EJtkdCaP6bN9CvTo2VbdbB0uSpsxdERybvmiV\nOjSrl9T3AwAAAKKY0ULWql0jL4hP69U+iI8fOEpvjJ6ZsjyY3QIAAMg9FFrICZcd1CmI16zfqJve\nnxRjNgAAAMh2FFpIC4XLCKffeYTq1qzaFa1XHrK9auRZMB42bWGVvl8iZrgAAACyH4UWcs45e3XQ\n63/bIxhf9tq42HKh6AIAAMhOFFrISdu3blDs89/+tijFmQAAACAb0XUQaakqOxImeuy03XTBf3+Q\nJJ3z/Ggdu9uWVfp+pVmdv0Gdb/xUkjTplkOqfBklAAAAqgYzWsh5PbduGsRm0js/zA7Gcd7omGWF\nAAAAmYtCC2kvlY0y/nteL3VqWT8Yn/v86Cp9PwAAAGQnCi0gomv7xnrzgrBRxsTZy4P457nLi3tJ\nyjDDBQAAkDnYAAIkqJEX/v7hiJ1ba9CEuZKk4waOUvetmsSVFgAAADIIM1pAKW4+uksQ51UzjZmx\nJBgPGv9nHClJYnYLAAAg3TGjhYwS7UYoVX1HwqjBl++r17+fqce++k2SdNP7k4JjLsamGRLdCgEA\nANINM1pAGbVqWFsXHdApGDeqUyOIr3xzQhwpFYvZLgAAgPhRaCGjpbIjYaIPLtoziL+csiCl7w0A\nAID0RqGFrJHqoiv6HtGW8P94ZaymL1pV5e9fFsxuAQAAxINCC0iCF87tGcRf/LxARz0yIsZsAAAA\nEDd2zCNrRRtnVPVsTs3q4e8s9t62uYb/sjAYvz12dpW+d3nQNAMAACA1mNECkuzJM7vr8dO7BePb\nP/o5xmwAAAAQB36djZyQ6rbw+27XIogb1K6uFWu997v4fz/oykO2r9L3BgAAQPyY0QKq2DsX7hHE\ngyfP118eHh5jNiEaZQAAAFQdCi2gijWuWzOI99ymmdZvDG9u/MDgaXGkVCwKLwAAgOSh0EJOiuv+\nW0+d2V2PnrpbMH75mz+CeNzMpSnLY3MougAAACqHPVpACpmZ9tuhZTDevUMTfTd9iSTplKe+Vdd2\njeNKrVR0KwQAACgfZrSQ8+Ka3ZKkgZHuhDXyTD9GZrXu+XRKSnMpK2a7AAAANo9CC0gTgy/vowv6\ndAzGr34/K4jHz0qfZYWJKLwAAAA2RaEFpIkWDWrpogM6BeNDu7QK4tOf/k7PDPs9jrQAAABQAWy0\nABJE77kV5wzNgGN30ic/zZMkbShwuvfzqbHlUlbs5QIAAPAwowVkgFuP7qLaNcK/rnd89HOM2QAA\nAGBz+HUzUIro7JYU3wzX8d3bqmv7xjry4RGSpLfGzg6OzV66Rls2rhNLXpvDDBcAAMhVzGils/xV\nUv9G3iN/VdzZIGbbtKgfxD07NAniwx4Yppve+ymOlMqFphkAACCXUGgB5RBnK/ioxyJt4TcUOL0x\nJuxQ+MG4OXGkVC4UXQAAINtRaAEVlC5F18vn7a49t2kWjG/+YHIQ/zRneRwplRuFFwAAyDYUWkCG\n67ZVEz19Vo9g3KlluMTwrGe/jyOlSqHoAgAA2YBCK505F8YzRsWXBzYrXWa3JOl/f+0VxHlmQXz+\nC6M1evqSOFICAADIORRa6SzyQ7KG3xdfHshYb13QO4hH/rpIZz77XYzZVEx0hmvhyrXMdgEAgIxA\noZUpZoyQfhlKF0KUS9umdYP4pB5tVT0vLN4ve21cHCklFcsMAQBAuqLQyiTMamWMdFpKWKj/UV30\n6aX7BONh0xYG8YTZy+SiS1UBAABQKenxEyA2r1p1afqwuLNAhtuiUXhj477bt9CXUxZIkvo98Y3a\nNQmPZWLRxc2RAQBAOmFGK1PsclLcGaCC0nF2S5LuOXGXIK5TI08zl6wJxsc/9k0QZ2LRJbGsEAAA\nxCt9furDpmrWk/ov8+Il06Vxr0luY6wpITsNu7qvvpq6UFe87u3b+mPx6uDYgfd9rX23axFXaknB\nbBcAAEg1ZrQyRZMO0s4nxJ0FkiAdZ7jq1qyuw3ZqHYwHHNMliP9ctlavfT8zGD/25a8pza0qMNsF\nAACqWloUWmZ2oZn9bmZrzWyMFIbjAAAgAElEQVSMme2zmfMbm9mjZvan/5rJZnZ4Za6ZEfa6JIx/\nGUIHwiyQjkWXJB0aKboeO72bTt29XTB+Zvj0IH562G/6euqCVKYGAACQEWL/yc7M+kl6QNKFkkZI\n+pukj82ss3Puj2LOrynpc0nzJZ0gaZakdpJWVPSaGaNJhzD+6j+xpYHc0me7FuqzXQu98p03q7Vr\n20YaN8tb0nrf59OKnDt2RubdEDm6rHD0DQeox4AhkrwlhpJYcggAACokHWa0Lpf0jHPuaefcZOfc\npZJmSrqghPPPldRU0jHOuRHOuRnOueHOuehNgcp7zcwzb0LcGaAKpOsMV9QzZ/cI4sN3bq2OLeoF\n47++NDaIM7WJBgAAQDLE+pOcPzvVXdKdCYc+k7RnCS87StIoSY+a2dGSFkh6RdJdzrmNFbmmmdWS\nVCvyVIPyfA6gKhQWXYXScS/RPSfuKimc9alezbShwCuwjnhouI7v3ja23JKNhhoAAKA84p7Rai4p\nT9K8hOfnSWq96emSpI7ylgzmSTpc0gBJV0i6vhLXvFbSsshjVpk/QVzqtYw7A2AT7/4j/F3G9EWr\nde9nU4Pxs5G9Xdkg2lBj4cq1NNcAAABFxF1oFUpcY2TFPFeomrz9WX91zo1xzr0q6TZtuiywPNe8\nQ1KjyCP9fw2/18VhvHZ5fHkAEa0b1Q7iW47uol3aNgrGAyPdCp8bMT2VaaUcXQ0BAEDchdZCSRu1\n6UxTS206I1XoT0lTnStyQ6nJklr7ywbLfU3n3Drn3PLChyKNNdJK4X21+i+Tup0ZPj/yQa/zIF0I\ns1om7N+KOqF7W736197BuM92zYP40S/Couv73xeroCB793MlFl0UYQAA5IZYCy3nXL6kMZIOSjh0\nkKSRJbxshKRtzSya+3aS/nTO5VfwmpmnWuQH7e+fkZbMiC8XoAzuPWnXIN5xi3Ab5FnPfa8D7vsq\njpQAAACqTNwzWpJ0n6TzzexcM9vRzO6X1F7S45JkZi+a2R2R8x+T1EzSg2a2nZkdIek6SY+W9ZpZ\nZ2O+NHRA3FkghTJtdivRi+f2DOIGtatr3vJ1wfiMZ76LI6VYsM8LAIDsFftPaM6518ysmaQbJW0h\naaKkw51zhVM07SUVRM6faWYHS7pf0nhJsyU9KOmuclwzu1g1acqguLMAyszMgnjYVfvp62kLdPH/\nfpQkTf4zXLn7j1fGav8dcrPxC10OAQDIbGnxf27n3EBJA0s41reY50ZJ6r3p2WW7Ztbperr0w4tx\nZ4EYRVvBZ9psSM3q1XTgjq2C8WUHddL9/o2Qv/h5gb74eUFw7P0f56Q8v3SQWHRJ3EgZAIB0lw5L\nB1FZ+14p1eLWX/Bk+rLC03q1D+J/7reNOm/RMBjf8uHkIP544lytXJtZRWVVoLkGAADpiUIrG9Rr\nJu11aTjesK7kc4EMcuF+2+rNC/YIxls1qxvEV7w+TnveNTQYz1++NqW5pavS9n1RlAEAkDoUWpkq\n2uq9Zj2pxznhsbEv0uodkjJ/divRm38PVwx3aFZXGzaGbeEPf2hEEE+dt0LOZW/L+GSg6AIAoGpl\n/k9e8FQPbxSrb7OzuSIqL5P3cklFm2h8dMk++m3BSv3lYa/Ait6R/JhHR6ptkzqpTzCD0XwDAIDk\nYkYrG634M+4MkAGyYbarY4v6QfzxpXsHcc3q1TRryZpgfON7P6U0r0zHbBcAAJWXmT9dAUi6TJ/t\nal6/VhCPvGY/jfxlkS5+1WsZ/9GEucGxZ4f/rh0iDTZQOma6AACoGP6PmY3qtZRWzY87CyA2dWtW\n14Gdw5bxe27TTCN/XSRJuuezqUXOHTKZvyvlQeEFAEDZsHQwG/X6exhvWOc1xKA5BsohG5YVRj10\nStcgPrhLK7VvGnYvvPqtCUH8Xo7ep6uiEpcYsuQQAIBQ5v8EBU9hF0JJWr1IGnqLF3//lLTHP+PL\nC1kh05cVRj3Qzyu6CmdlmtarocWr1kuSbo3cp+vwB4dpu9bh/enoYlg+5bnJMrNkAIBsxIxWNop2\nIBx+v7RsVny5AGlu0MVhE43dOzQJ4umLVuuzn+YF4xMf/yaleWWz0ma+mBUDAGQLfm2Y7davkQb3\njzsLZJHo7FahTJ7tqpEX/r5p4Ond1GPAEEnS02d215R5K3X3p1MkeYVXoSteH6cTurdNbaJg5gsA\nkFGY0cp2lidN+SjuLICMs+e2zXXOXh2C8bWHbR/EH0+cq/NeGB2M3x47O5Wp5ZSSZriY+QIApDsK\nrWzX8/y4M0AOSWyikU1NNY6PzGD169lO9WrlBePbP/o5iM9+9ju9OHJ6KlODKLwAAOmHQivb7XOF\nVL91OM5fTQdCxCKbiq6bjuysr67sG4z33KZZEH83fYnu/GRKML7+nYlBvH5jQUryy3WldUNcuHIt\nBRkAICUotLJdrfrSgTeF46V/xJcLkEWixWK0ffw1h25fpKnGp5GGGr1uH6IznvkuGNPJMH7MhAEA\nqgqFVjYqbPXef5kX73hUeGzorfHlBfiyaXYr0Zl7dtDz5+4ejP/ep2MQr11foDEzlgTjYweOCuIN\nBcx2xY2iCwCQTBRaucAsjH/7Ir48gBJkc+F1/j5bB/GHF+2lAcfsFIxnLVkTxPve9VUQvzF6pqbN\nW5GaBFEiCi8AQGVQaAFAinRsUV/HddsyGN96dJcgzo/s37rp/Uk6+tGRwfi+z6cG8Zr8jVWcJYpD\n0QUAKC8KrVzToE3cGQClyubZrUSH7Rw2qnnnwj2CePcOTVSnRtjV8JVvZwZx9wGDtd89XwbjF0fN\nCGL2fKVOSQ02Eptt0IgDAHIXhVau2f/fYbz4d6/zIF0IkcZypfBq17RuED9/7u769rr9g3G/nkVv\njjxv+bogfmjIL0G8791f6orXx1VhlkgmZskAILtRaOWabQ8M4y/viC8PoAJypeiSpOp54T/PVx4S\n3ix5xNX76ZXzewXjgzq3DOJFK/P18cS5wfjkJ78N4qnzVmh2ZE8Y0gtFFwBkn+z+SQWewi6EUtFZ\nq58/lGaNjicnABXSpF5NNalXMxjfcdzO+nzSEEnSi+f21Le/L9ajX/wqSfpl/srgvGMie74k6Z+v\n/BDEa/I3qk7NPCF9rM7foM43fipJmnTLIVn/iwUAyEb8y53rht4SdwZAhRXOcBWKxrk4K9CjQ1P1\n6NA0KLRuObqzbnxvkiSpWb2aWrlug9Zt8JpufPPb4uB1e901VHtt2zz1CaNMKLoAIDOxdDCX1ajD\njBaQxQ7feYsgHnb1fvrhxoOC8bWHhcsR164v0JDJ84PxBS+PDeLla9ZXcZYoL5YZAkBmoNDKZbv/\nLe4MgCqTS/u5KuL47mGDjbcu2EMX9t0mGH8/Pbyp8v73fh3EDw6epvnL16YmQZRJYtFVkW6IFGsA\nUDUotHJZ7wulupHlQvmr6UCIrETRVbodt2iof+6/bTC+9MBtiz3via9/04H3h4XXklX5VZ4bql5Z\nizUKNAAoHwqtXFarvtTnqnC8bHZ8uQApROFVutN7bxXEw6/uG8Td2jfWho3hvboOun9YEF/15ngN\nGDQ5GM9dxsxXtqNAA4DS8RNGrol2IJSkrqdKH/vF1uf/Lv41QBaLNtTgB8BN1Y7cOPnl83tp4uxl\nOumJbzY578PxfxYZ/+XhEUH81phZ6t6hSdUliYwSbe4x+oYD1GOA1zVz0i2HSFKlj9EwBEC64F+i\nXGeRSc3pX5d8HpADErsYUnhtaqctGwXxV1f2UZ+7v5Lk3etr+Zr1euLr3yRJeWba6LzZr3+/91OR\nazw6NLzJMq3lkWyJXRolijAA8eBfGwAoAbNdpatXK/xfyDl7dZCkoNAa+q99gyKs+1ZNNH7WUq33\nlx0+N3JG8LruAwarZYNawfiZ4b8Hcf6GAtWszgp3JE9pRVh0lowZMwDJwL8UCLXYUVowefPnATmI\n2a7yiRZhL523u9at36jdbh0sSTp2tzZ654c5wfH5K9YF8WNf/hbEPQYM1jYt6gXjwZPnVWXKQJmU\ntVijIAPArwoROuSOMJ4+ouTzAKCcakX2el1/xI5BPPKa/fTqX3sF47/sEt77a0OB05R5K4PxNW9N\nDOK/vjgmiNet35j0fIFkKK1BCIDsx69aEGq9Uxh//m/plRO9+Lo5XhMNAAGWFSZH47o11bhuzWDc\n/6jOQWONwZfvq5/nrtA/X/lBkrTzlg01YfZySdLYP5YGr+l1x1B1bRvuHcvfUJCK1AEAKBWFVq6L\ndiGM3jtrwc/x5ANkIJYVVo02jeuoTeM6wfi5c3oGy7KuP3wH3faR9+9U/oYCfRe5yfJ+93wVxO//\nOEetGoZ7wIB0UdbuiyxBBDIXf3MBIMmY7ap6x3bbMii0Bl28t777fbFu/mCSJGldZEbrmrcnFHnd\nAfeG3VXv/3yqtm1ZPwXZAhWXjHb4pRVrdGkEqg57tFC8ptvEnQGQFbg5ctXbunk99evZLhi/8ffe\nQdy7Y1Nt3Txc+rxszfogfmrY77r6rbAQO/6xUUE88tdFWrWOIhnZobSbS5f2y6Cy3pS6tBtUl+cY\nkG0otFC8/a4L40W/essK+zfyHtElhgDKhcKr6kULq2fP7qlBF+8djKONN/r1bKfuW4U3Up6xaHUQ\nn//CaPW6fUgw/mTi3KpKF4CvrAUaRRkyBYUWird1nzD+5FrJv/EogOSh6Eq96FLBm47srJfO2z0Y\nP3Jq1yBu07i2CiL/7N3wbnjT5aveHK/XR88Mxo5/H4GUquhMG5Bq/J8doZIaY8wYLo1/LZ6cgBxB\nQ4349e7YLIgHX95H85avDRpr7LhFA03+c4Uk6cPxfwadESWp9x1fBPGZz34fxPd+NqVIM4+Zi8MZ\nMwCpV9p+N37ZharAdxXKZsjNcWcA5JTEwisaR8cUZFWnVcPaQfzSebsHP5Rd0HcbjZm+OOh0uDEy\n9TVpzvIgfmb49CLXO3ZguAdsjzuGqmWDsBvi8yPCc51zMrOkfAYAZZOMpiMUb0jE0kFsXutdpLXL\n4s4CQDFYfph6F+2/rZ4/N1xy+NHFewXxfSftEsRn9G6v/XdoGYzr1gxv2rxszXpNmx/ejPmRL34N\n4kMeGKZ7Pp2S9LwBpE5Zlzcmq3kIe9jSE4UWNu+Ie6VqkR/g8lfTGANIUxReqdcyMvO173Ytgvja\nw3fUI6fuFoy/vqpvEL/3jz311Jndg/HhO7cO4llL1ujZyAzXuc+PDuJfF6xkTxgASaUXV8nuEFnW\n61e0yMvWQpH/C2PzWnWRel8ojXzIG69ZUvr5ANIC+77SV6dWDdSpVYNgfMvRXfTRBK+z4QP9dtWn\nP83Tx36nw/GzwhUFRz48Qk3r1QzGn/4UdkMsKHCqVo0lhwCSr7j7rZXl3LIutRx9wwGlvl+m/uIw\nM7NG1Ys2xpCkvS8NC63Pb4wnJwCVUtq+L4qw9HFwl9Y6uEvroNAacEyXoOthrerVtHhVfnDu9e+E\n3RB3ufkz1a8d/m/96WG/BzGzYACQeiwdRNlUD5fGaOrH8eUBoEqw5DB9HbpTuKzw2+sO0H/PD/eH\n7dq2URAXOGn5mrBgfvyr34K4791fBfFDQ6bp/R/nVFW6AAAf/zcFABQRnflipiu91KxeTbu1D2+y\n/MzZPYKlN19d2VfL167XkQ+PkCQd2qWVPvlpniRpVf7G4DXRAkyS+j3xTRC/9+Ns1cgLfwf785/L\nBQCoGAotlF/rXaW547zYFcSbC4AqxT6vzNGiQS21iLSMH3DsTkGh9frfeumkJ76VJJ3Yva1mLFoV\ntKf/dUHY1OjatycWuebpz4T3Bdv7ri+0ZeS+YBNm0Y0WAErD0kGU3+H3hPEP//U6D9KFEMgJLDHM\nTB1b1A/im4/uUqQ9/T0nhi3p9962uXpt3TQYN68fNt5YvCpfE2aHxdU5kW6I578wWhf/74dgHF2a\nyP4wALmK/0ui/JpuHcZf3SntcETJ5wLIWomzXRI3Us5EfbcPW9I/6becL+z29cml+wRLE9+8YA/N\nXrJGl7z6oySpUZ0aWrZmvSRp5K+Lilzzlg8nB3GPAUPUtkk4E/bmmFlBHG3sAQDZhkILZRPtQhid\ntVqzRPr67nhyApC2WHKYfTpv0VCdt2gYjD+/fB/tfttQSdKdx++s1fkbdcsHkyRJvTs21Te/LZYk\nrVm/scjNme/8OLwZ88H3Dwvig+77Wo3r1gjG1749IYgHfDhJNaqHi3A+mUhbewDpj6WDqLwfXoo7\nAwBAilWzsLg5atc2Orlnu2AcvVHzx5fsrSfO6BaM9+nUvNjrzV66Rj/NCZtvfD5pfhC/8t1MvTBy\nRjAubHcvSbvfPkSnPvVtMI4uW5w0Z7mmzF0RjDdsZF8xgNRhRguVs+NR0uT3484CQJrjHl65a6tm\n9bRVs3rB+P5+uwbLEb+9bn/1ut2bFfvf//XS0tXrdcF/x0qSrji4k+79bJok6e99Oip/Q4GeHTFd\nktStfWON/WOpJGl1/kb9OHNpcP3ossUTHh9VJJfed3wRxBe+PFZbRpY0Dp40L4iHT1sYxKOnLy5y\nk2gAKCsKLVTOATdKv3wurV/jjfNXS7e38eLr5nhLDgGgFKUVYdExBVn2yYss+du1XeMix07ZvX1Q\naF18QCdJCgqtJ8/sHhRr7/9zL02dt0L/emO8JGnPbZoFe8ZaN6ytDQUFWrhy071gX05dUGR8TaTj\n4qWvjQviM5/9vsh5hz4QLne86s3xRYowOjECiGLpICqnYRtpz0vC8VruuQKgatDxEMXZtmV9Hb7z\nFsH4oVO6BvHQf/XR11ftF4wHX75PEN90ZGedt3eHYNytfVjodd6iQRB3aFZXDWuH32/Rou3D8X/q\nxVHhksZoJ8ZjB47UJa+GnRjfGTs7iFet45cGQC6g0EL5FTbG6L/Mi3v9LTw2jMYYAID01LhuOPvU\nr2c7XXHw9sG4sOOiJL14Xtj+/qNL9tE31x0QjF8+Pzx25SHbFynWWkXuYzZl7ooi+8xu++jnIO51\n+xAd/ciIYPx5ZNkigOxBoYXKqx7+j0Xj/hdfHgByBrNbiMsOrcPZrnP26lCkWBt0yd5BPPC03XTt\n4TsE42gTkAKnIp0YozeKPubREbr1w0nBONoghHuSAZmF/zsBADIezTaQbvpu31KSdIc/kxVtAvLl\nv/powuzlusi/yfMubRtpvL+/a+q8lZo6LyzCzorsEetz91dB/I//jlX1vHCP283vh8XZ41/+quaR\n2bW16zcm7XMBKDsKLSRXnabSmsXhOH8VzTEAxIoiDOmmZcPaOqBh7WD87Nk9giLsgX67auwfS4O9\nX60a1tK85eskeR0WC30xpWgzjw/G/xnEDw39pcixfe76Moj/+uJo1ayeF4z//tLYID7/hdFqVCe8\nl9nL3/wRxD/8saTI0ksAm0ehheTa/wZp0OVevOhXqdk28eYDAKWgCEO6ObhLax3cpXVQaA26eO+g\nCHvrgj10/GNey/pbju6iDRsLgnb2/9x/Gz0y9FdJ0vHdttSilflBZ8XogsPhvywq8n6jZywJ4sJu\njYUeGDwtiE97+rsixw649+sgPvOZ8NhfHhquFZFmH395KNyLds5z36t6pNPkVW+OD+Lr35lYZIbu\n7UjzkN8XrlK9mmFxCGQK9mghuXY4Mow/uUZiPTmADBXdB9a8fm32hCF2WzWrG8QndG+rk3dvH4zP\n3rNDEN96zE4aeHp4k+hot8U7jttJ/Y/qHIwHHNMliO88fuci+8oO7dIqiNs1qaP6tcLv/WVr1gfx\npD/Dm0L/tnCVFqxYF4znLl8bxN/+vlgjIsXc0J/DWbl3fpitN0bPCsa3R5qHHPHQcPW9J1w2GS36\nBgyarDs+Cu+d9uaY8BqTIvvbCgr4eQSpR6GFyot2IawVWRo4Y4Q04fX48gKAKkIzDmSS6JK/o7tu\nqZN6tAvGh+7UOoiP2rWNzui9VTAecOxOQfzpZfvqu+vD7ouv/a1XED/Qb9cgfv6cnnrzgj0i4x5B\nfM+Ju+jO43YOxlcfGjYSuezATrpo/22DcbR5SMPa1RWZCNOUuWFh98q3f+ilyBLHOz+eEsTRe6Dt\nfPNn2uOOocH45Ce/DeIr3xinRyLLLUf8Et6w+vvfF2tMZNbv5z/D4m3WktVFikqalSAR/3dA1Rpy\nS9wZAECV4obLyEXbtKgfxHtHiqLdt25a5LydtmwUxIX3O7vm7QmSpBN7tNVdn3iF0f/t21GS9LBf\n8ESbh3xz3QFyzqnLTZ9Jku47aRdd/rq37PCCPh21ocDpqWG/S5L2275FsH+tVYNamucXQs4VnYX7\nJdL1cdCEuUVyvuTV8IbVZz1X9IbVpz8Tjg++f1iRY71uDwu5Ix4cHr7m6W+LzAY+GFmS+fbY2apf\nK1wWOXhy2Or/05/mFtkzN2vx6iAuKHCqFq0+kZYotFB1WnaW5k/a/HkAkAMSCzJJ7A8DysgsLCr2\n3a5FEF90QCdJCgqtu0/cJSjQBl0S7m/76sq+Wr52vY582NszNvC03XThf72uj1ccvJ1mLFqlN8d4\n+8J2aN1AP/uzZh2b19NG5zRjkVfktGxQS/P94q1OjTyt3bAx2CURXZ04LzLTNfaPpUU+S3QG7oZ3\nJxY5ds1b4fiy18YVOXbMwFFB3PXWz9W8XthZsnDvniQd++gINYwUaNG9dpMjM3KoeiwdRNU5/G5J\nkd+25K+W+jfyHvmrYksLANIdSxOB5GrRoFaRWbjozNt5e2+tW44Ol0lGb0r94cV76+NLwj1uH0Xu\nlTbm3wdqYv+Dg/EnkWMvntsziB/ot6sGHBNe/4ze4d66fTs1V7f2jYNx13bhDGC39o21TYtwS0ad\nGuHM14aNrsj+t8JCUJKmzFup76eHyx2j3SPPiMzIHf7gMB36QDgrF72VwLVvT9CAQeHety8jXS5n\nLVldZEZwztI1Qbxo5boi41zHv96oOm12k3qcI41+1huv5y8eAJQXM2FA+orOtEXvXda5TcMgPriL\ntw+ucPbqkgM7BbNaj5/R3Tv/xk8lSU+fFbb6f/n8XkWODbu6b3BsyBX7asGKdcFesyfP6Ka/+q36\nnzqzu5avWa8r3vCWV57Ru33wfo3r1tDS1d4SyumR4kwqenPs936cU+TYv94IO0QmLpk86pGRQbzP\nf74scqzfE98E8ScT56ptkzrFvt9dH4fNT/a8c6jWbShQNmBGC1WrzzVhPPKh+PIAgBzATBiQG7Zo\nVEe7tA1nwrpt1SSI99q2uQ7z98NJXmFXaPDl+wbxS+ftrpfPC2fv7j1plyC+4qDt9Dd/35wkdd6i\nQRDXqZGnxnXDpYm1qhctJ2pGxr8uCFcwXf76OJ0UKbyiM2hvjAnb+S9dvV5r8rPjJtsUWkiuaAfC\nmvWkWuE0vUY/E19eAJBjKLoAlKb7Vk2KFGh9Invfzttn6yIF2ouRgmzMvw/UyGv2D8YjrtkviCf2\nP1g/3nhQML4/0pFyt3aN1bx+2AGzVcNwBvCsPcNulx9ctJc+uyxcrpnJKLSQOi5hGjh/FXu2ACAF\nKLoApEJiJ8Rom/7//l8vfX1VWJQNujjc0xZt7b9Ni/pq2yS8Z1wm419bpE7tRtLaZXFnAQA5L7rv\ni31dAFA1KLSQOn2vkz652osXTpOadyr9fABAlaPZBgBUDQotpE6X48JC690LpLM/jDcfAEC5lHZz\nZoowACiKQgupE2mBqvmTpME3x5cLACCpWI4IAEVRaKFqFXYhlDZteDH2hTDOXy3d3saLr5vjvQ4A\nkJFKW45IEQYgV1BoIR69L5S+GRh3FgCAFGPmC0CuoNBCPPpcLc38Vpo9xhsntn4HAGS98jTiiI4p\n0ABkAgotxCOvhnT0o9LA3t74h5fjzQcAkDESC7Ro4VXaMQBIJQotxKdx+zD++u6ix/JXsWcLAFAm\nxc2MlXSMWTIAqUKhhdSJNsaQijbH2LAm9fkAAOAra0FW2jGKNQBRFFpID9XrUGwBADIae84ARFWL\nOwFAkrTvlWG8YGp8eQAAkGKFBdr0O49Q3Zr8DhzIFvxtRnrY7XRp6C1e/Na50tmDwmPcYwsAkENK\nWsbIzBeQWSi0kB4sMrm6+Dfp/YviywUAgDRUnqWJFGVA/Ci0EJ9oc4xoY4zqtaVfBseTEwAAWaCi\nzT0o0IDkodBC+jnsP9IHF8edBQAAOaciBVpicRa9RmmFW2kzdBR8yAYUWkg/O58gzR0vff+0N144\nLd58AABAicpzHzNp0+KtIq8rS4FW0Rtbc9NrJAuFFtLT/v8OC633Log3FwAAkBHKW/RV5FhZC8CK\nFIqlHaPgyzwUWkhPeTXCeMn0MKYDIQAAyEEVneWLxhRrqUWhhfRXvZa0YV3cWQAAAGQ09sWlFoUW\n0kO0A6FUtAvhwbdJH/3Li2ePSW1eAAAAOSBZtw8oazOUXEChhfTX+Ziw0Pr0unhzAQAAyHGb27dW\n0nklFV4VbZqS7ii0kFkW/1p0nL+KPVsAAAAZoKwFWraoFncCAAAAAJBtmNFCeoru2Yru19r2QOmX\nwV5csFGqlpf63AAAAIDNYEYLmeWA/mH8zcDY0gAAAABKw4wWMkuD1mH81V1S653DMffYAgAAQJpg\nRguZyxVI714YdxYAAADAJii0kLna7CatXRp3FgAAAMAmKLSQ/gobY/RfJtWsGz5/3FNS3ebh2LnU\n5wYAAAAUg0ILmathG+m4J8PxyIeKHs9fJfVv5D2inQsBAACAKkahhczWvncYj3o4vjwAAACACAot\nAAAAAEgyCi1kj06HhPHi34oey1/NMkIAAACkDIUWMkuRxhgJ98k6/J4wfv1MafXi1OYGAAAA+Ci0\nkD1q1Anjxb9Jb50fXy4AAADIaRRayE4160szv4k7CwAAAOQoCi1kp+OelCwv7iwAAACQoyi0kNlK\nuplxx77SIbeF47EvFn0d99gCAABAFaLQQvbqdmYYD70lvjwAAACQcyi0AAAAACDJKLSQG3bpF8bT\nR8SXBwAAAHIChRZyw/V6EgoAACAASURBVIGRpYPv/E1aNiu+XAAAAJD1qsedAJA0hY0xCkWbXFSL\ndCBcs1h667zIeaul29t48XVzNr0RMgAAAFBOsc9omdmFZva7ma01szFmtk8p555tZq6YR+3IOdXN\nbIB/zTVm9puZ3WhmsX9WpIk6TaW5E+LOAgAAAFks1uLDzPpJekDSbZJ2kzRM0sdm1r6Uly2XtEX0\n4ZxbGzl+taS/S/qnpB0lXSXpSkkXJf0DIDMd+wT32AIAAECVinuW53JJzzjnnnbOTXbOXSpppqQL\nSnmNc87NjT4Sju8h6T3n3CDn3HTn3JuSPpPUo6QLmlktM2tY+JDUoJKfC+msw17SATeG4z++iS8X\nAAAAZKXYCi0zqympu7wiKOozSXuW8tL6ZjbDzGaZ2YdmtlvC8eGSDjCz7fz32VXS3pI+KuWa10pa\nFnnQKSEblHQzY0nqeX4Yf5Aw2cnNjAEAAFBJcc5oNZeUJ2lewvPzJLUu4TU/Szpb0lGSTpG0VtII\nM+sUOecuSf+T9LOZrZf0g6QHnHP/KyWXOyQ1ijzaluuTIPOYhfGaJfHlAQAAgKyUDl0HXcLYinnO\nO9G5byQF67zMbISksfL2X13sP91P0umSTpX0k6Sukh4wsznOuRdKuO46Sesi163QB0GGqtMkLLac\nK1qEAQAAABUQ54zWQkkbtensVUttOstVLOdcgaTvJUVntO6WdKdz7lXn3ATn3EuS7pe3PBDY1JEP\nhfF3T8SXBwAAALJGbDNazrl8Mxsj6SBJ70QOHSTpvbJcw7ypp66Sor2660oqSDh1o+Jv/IE4lXaP\nrfZ7hPGQW6Wm26QuLwAAAGSluJcO3ifpJTMbLWmUpL9Kai/pcUkysxclzXbOXeuPb5K3dHCapIby\nlgt2lfSPyDU/kHS9mf0hb+ngbvK6Gz6big+ETOek9y4Mh9zMGAAAABUQa6HlnHvNzJpJulHePbEm\nSjrcOTfDP6W9is5ONZb0pLzlhsvkNbrY1zn3XeSciyTdKmmgvGWIcyQ9IemWKvwoyBbt95T+GBl3\nFgAAAMhwcc9oyTk3UF5RVNyxvgnjyyRdtpnrrZB0qf8Ayue4J6UXjpSW/O6NN6wr/XwAAACgGOxb\nQm4q6R5bdZtKJz4fjj+7oejruMcWAAAAyoBCC0jUPNLEctI7JZ8HAAAAlIBCCwAAAACSjEILKE3X\n08L4j2+LHstfzTJCAAAAFItCCyiyXyuhfft+kT1ar522abEFAAAAFINCCyhNXo0wXr/aK7YAAACA\nzaDQAspq6329YgsAAADYDAotoKxOeM4rtgotmBrG7NcCAABABIUWkKike2zVqCOd8Gw4fuuc1OcG\nAACAjEChBZRHjUjhtXJefHkAAAAgrVFoARXVoHUYb1gXXx4AAABIOxRaQGlKa/1+/HNh/Nl1RY/l\nr2LPFgAAQA6j0AIqqnmnMJ70Xnx5AAAAIO1QaAEAAABAklFoAeVRUkfCXU8N4/mTUp8XAAAA0gqF\nFpAM+/87jF/pxz22AAAAchyFFpAMeTXCePUi6ZWT4ssFAAAAsaPQApKtxY7SqvlxZwEAAIAYUWgB\nyXbqa1Lz7cLxstlFj9P6HQDw/+zdd7wU1f3/8fdHqnQbCiqxxF4RjSUWAmLvDaMEAVusMeabIj9j\niYmaZu+KUbCANRYkYsNOVKxY0aAiCAoq5V7hUs7vj9nrmbvs7J27zO5seT0fj33wOTNn5n52XGE/\n95w5A6DqUWgBhYpaGKPj6kGx1eieQaXPDQAAAKmi0AKKodOaPp47Lb08AAAAkAoKLaDYuqzt47o5\n6eUBAACAkqHQAortqFE+vvc4aXG9b7P0OwAAQFWi0AKKrVsvH894XXrojPRyAQAAQEm0TjsBoCo0\nLozRKGp0qlVb6aNxpckJAAAAqWFECyilA6/Mv5+l3wEAAKoChRZQSpsfLPU717ffuTe9XAAAAFA0\nFFpAMUQ9Y0uSdjzFx48PL21eAAAAKAkKLaDUzEINF92PFQkBAAAqFoUWkKbNDvLx1OfTywMAAACJ\notACiq3JNMKOTfft+zcf3zdE+uLVkqYGAACA4qDQAtK0UugJC4u/l8b8Ir1cAAAAkBgKLaBcrLuj\ntGhe2lkAAAAgARRaQLk4aqTUYxvfnjW56X6esQUAAFAxKLSActGuszTwTt8ec2x6uQAAAGCFtG6+\nC4BENS6OIS0/MtVhVR8zagUAAFCxGNECytWG/Xz8ydPp5QEAAIAWo9ACytVB1/r4gZOkmW/7Ng8z\nBgAAKGtMHQTSFJ5GKDUtmlq18fHiemnM4NLlBQAAgBXCiBZQCdbYVKr7Ku0sAAAAEBOFFlAJBo6S\nOvfw7Yb6pvtZ+h0AAKCsUGgBlaDL2kGx1eihU9LLBQAAAM1a4Xu0zKyLpH6SPnTOvb/iKQE1LN/S\n79039/FnL0afo6FeurhnEA+fEZwTAAAAJdXiES0zu8fMTs/EK0t6TdI9kt42s8MTzg9ALq3a+njZ\nkvTyAAAAQE6FTB3cXdLzmfhQSSapm6QzJZ2bUF4A8jnoah8/cJK0ZGF6uQAAAGA5hUwd7Crpm0y8\nj6T7nXP1ZjZW0t8TywyodfmWft+wv48/+o80+tjS5QUAAIBmFTKiNU3SzmbWUUGhNT6zfRVJ/Fod\nKLV2naXPX047CwAAAIQUUmhdIelOSV9ImiFpQmb77pLeSSYtALENul/quIZvLwg9b6uhnmXfAQAA\nUtDiQss5d52knSUNk7Src25ZZtf/xD1aQOmtuaX0i3/79himEQIAAKStoOXdnXOvKVhtUGbWStJW\nkl5yzn2bYG4AwvIt/b7q+j7+dmr0ORrqWPodAACgBApZ3v0KMzs+E7eS9Kyk1yVNM7O+yaYHoMW6\nrOPjeTPSywMAAKCGFXKP1hGS3srEB0paX9KmCu7d+ktCeQEo1MA7fcw0QgAAgFQUMnVwdUkzM/F+\nku51zn1kZiMUPEsLQLHlW/q969o+njst+hwN9UwjBAAAKJJCRrRmSdo8M21wH0lPZrZ3kLQ0qcQA\nJGCV9Xz87WeppQEAAFBrCim0/iXpHkmTJTlJT2S27yjpg4TyApCE8DTCOw+Xvv00tVQAAABqSYun\nDjrnLjCzyZLWVTBtcFFm11JJlyaZHICYolYk7LSmj+fNkO44vLR5AQAA1KhCl3e/L8e221c8HQBF\ns/rG0uyPovez9DsAAEBiCpk6KDPbw8weMbOPzWyKmT1sZrslnRyABB17n7T6Jr79TZ7nbQEAAGCF\nFPIcrUEKFsCol3SVpGskfS/pKTM7Jtn0ACSm4+pBsdXonkHp5QIAAFDlCpk6+P8k/c45d3lo25Vm\ndrakP0q6K5HMACSv42o+XjAruh9LvwMAAKyQQqYObiDpkRzbH1bw8GIAaWpcGOOCuVLbDtH9Vt3Q\nx7OnFD8vAACAGlJIoTVNUv8c2/tn9gGoBAPv8PHtB0gfP5VeLgAAAFWmkKmD/5R0lZltK+klBc/S\n2lXSEEm/Si41ACssvOy71HTp945r+HjRfOmewaXLCwAAoMoV8hyt681spqTfSDoqs/l9SQOdcw8l\nmRyAEtn2WOnN0MONly1tup+l3wEAAFqk0OdoPSjpwfA2M2tjZr2cc58nkhmA0tn3b9KaW0iPDw/a\n//lduvkAAABUuIKeoxVhc0k8mAeoRGZSnyG+/V6ewemGeumCrsErPBURAAAAPyhoRAtAhQrfs5Wv\nSLJWkstMH1y2RFqJvyoAAABaIskRLQDV4sArffzAidLi79PLBQAAoAJRaAFY3sb7+Pijx6W7j47u\n21DHVEIAAIAssecDmdnWzXTZZAVzAVCO2neVvng17SwAAAAqSktuvHhTwTOzLMe+xu0uiaQAlEC+\nZ2yFDXpQGnOsNP/LoD1zcvFzAwAAqHAtKbTWL1oWAMpX902lwQ9J1/4kaI/+eXTfhnqetwUAAKAW\nFFrOuc+KmQiAMtZ1HR8vCS2M4VywNDwAAACaYDEMAIHGqYQXzJXadojut80xPn7wZGnhvOLnBgAA\nUGEotAC0zJ4X+viDR6Vb947uy4qEAACgRlFoAWiZ8FTBrutK3zGrGAAAIBuFFoDlNZlGmGdBi2GP\nN33m1pt3Fj83AACACkChBaBwK3eTDh/h20+en14uAAAAZaQly7tLkszsDeV+XpaTtFDSx5Juc849\ns4K5AagEcVcdZOl3AABQQwoZ0fqPpA0k1Ul6RtIESQskbSjpVUk9JD1pZgcnlCOAtMVdkfCnZ/n4\n2b8Fy78DAADUoBaPaElaXdI/nXMXhTea2bmSfuSc28vMLpT0R0kPJZAjgEqx8+nSi1cE8YtXSEsX\npZsPAABASgoZ0TpK0t05to/O7FNm/yaFJgWgSky8Pu0MAAAAUlFIobVQ0i45tu+S2dd4Xn6VDVSj\nuCsS7vs3SaH7t5Yt8XFDPc/XAgAAVa2QqYNXS7rBzPoouCfLSfqJpBMkXZzps7ekNxLJEEBl6j1I\nat1OeuRXQfuh09LNBwAAoIRaXGg55/5sZlMlnS7pF5nNH0o60Tl3V6Z9gyTmDAG1oHGES1p+dGqr\nI32h9clTpc0LAAAgRYWMaMk5d6ekyCeTOue+LzgjANWpbSepYUEQ189puq+hjqXfAQBAVSn4gcVm\n1sfMBpnZsWbWO8mkAFSho0Nr6NwzOL08AAAASqCQBxZ3V7DCYF9J3ym4272rmT0j6Wjn3NeJZgig\nOnTfzMezP4zux4ONAQBAFShkROtqSV0kbeGcW9U5t4qkLTPbrkoyOQAVJu6KhB27+7hudvHzAgAA\nKLFCCq19JJ3inHu/cYNz7j1Jp0naN6nEAFSxgaFbPO88QlrAQDgAAKguhRRaK0lanGP74gLPB6DW\nrLq+j2d/FBRbURrqeOYWAACoOIWsOvi0pCvN7OfOuRmSZGZrS7pcEus3A/DyLf3eqHMPac6U0uUE\nAABQAoWMQJ0uqbOkT83sEzP7WNLUzLYzk0wOQA0YdH9QbDWaTdEFAAAqXyEPLJ4maTszGyBpUwWr\nDr7nnHsy6eQA1IBV1guKret3Cdr5phECAABUiIIeWCxJzrknJD3R2DazdSVd6JwblkRiAKpMvmmE\nq6zn48Whfc5JZr7N0u8AAKBCJLl4xaqSjkvwfABqUe9f+Pjh06Uli9LLBQAAoECsEgigvPQ/38fv\nPijd/fP0cgEAACgQhRaA8tW2kzRtYvR+ln4HAABlikILQOk13q91wdz891kNfqjpioRfvlX83AAA\nABIQezEMM3ugmS7dVjAXAGiq+2bSkLHS1dsF7THHppsPAABATC1ZdXBujP0jVyAXAFhe57V8vGRh\ndD9WJAQAAGUkdqHlnBtazEQA1LB8S7+HbX209PboIH7st9Jefy5+bgAAAAXgHi0AlWPART5+804e\nbgwAAMoWhRaAyhF+eHH7rtL0SdF9WZEQAACkiEILQGUaOk5aY1Pffv+R9HIBAADIQqEFoLzEXfp9\nlfWk40LF1dhfFz01AACAuCi0AFSuqEJsaUNp8wAAAMhCoQWgvDUZ4eoQ3W/PC318z3HSogW+3VDP\n/VoAAKCkKLQAVIdtQw8znvosKxICAIBUUWgBqD4rryrNfDvtLAAAQA2j0AJQOeIulHHcw1K3Xr49\n852m+1n6HQAAFBmFFoDqs+oG0uCHfXvMsdF9AQAAiiD1QsvMTjWzqWa20MwmmdluefoOMTOX49U+\nq9/aZnaHmc0xs3oze9PM+hT/3QAoqXwLZXTq7uPF9aXNCwAA1LxUCy0zGyjpCkl/kdRb0vOSxplZ\nrzyHzZPUI/xyzi0MnXMVSS9KWixpX0mbS/qNpO+K8R4AVIDNDvLxi1dJzvk2KxICAIAiaJ3yzz9b\n0gjn3C2Z9llmtrekUySdE3GMc87NzHPO30ua5pwbGtr2ab4kzKydpHahTZ3zZg2gsuz3D+n9zFTC\nZy+V5n6Rbj4AAKDqpTaiZWZtJfWRND5r13hJu+Q5tJOZfWZmX5jZo2bWO2v/QZJeM7N7zewrM3vD\nzE5sJp1zJM0NvfgWBlSafAtlWPivOpPevKOkqQEAgNqT5tTB1SW1kjQra/ssSWtFHPOBpCEKiqmf\nS1oo6UUz2yjUZwMFI2JTJO0t6QZJV5nZ4Dy5XCKpa+i1TkveCIAKcsQIqXXots66r33MNEIAAJCQ\ntKcOSpLLaluObUFH5yZKmvhDR7MXJb0u6QxJZ2Y2ryTpNefc8Ez7DTPbQkHxNTLivIskLQqdt+Xv\nAkBl2Hgf6dj7pNsPCNo82BgAABRBmoXWbElLtfzoVXctP8qVk3NumZm9Kik8ovWlpPeyur4v6fAC\n8wRQiRqnEkrLj06tvZ2P502PPkdDnXRxzyAePiP/s7sAAABCUps66JxrkDRJ0oCsXQMkvRTnHBYM\nPW2roLhq9KKkTbK6bizps8IyBVDVeoZu83z1luh+AAAALZD2c7Quk3SCmQ0zs83M7HJJvRTcVyUz\nG2lmlzR2NrPzzWxvM9vAzLaVNEJBoXVD6JyXS9rJzIab2Y/N7BhJJ0m6tlRvCkAFOXKUj5+9NL08\nAABAVUn1Hi3n3BgzW03SeQqeiTVZ0n7OucbRp16SloUO6SbpJgXTDedKekPS7s65V0LnfNXMDlWw\nwMV5kqZKOss5d2ex3w+AMhWeRig1nUrYJrQwRqs20tLFQTzjjaajXQ31TCMEAACxpb4YhnPuOknX\nRezrm9X+taRfxzjno5IeTSI/ADXkmHulUYcE8chDpH5/TDcfAABQsdKeOggA5WPNLX28bLH05HnR\nfRvqWAoeAABEotACUHuaPNy4Q+4+e/1ZWqmNb3/zv9LkBgAAqgKFFgDksv0w6biHfZvnbQEAgBag\n0AKAKD228fGiedH9GuqZRggAAJqg0AJQ2+JMI5SkzQ7y8bg/SEsWFT83AABQsSi0ACCO/f7p4zdG\n+tUJAQAAckh9eXcAKBv5nrdl5uOVV5G+fCv6PA11PHMLAIAax4gWALTUsMelHtv69gtXpJcLAAAo\nSxRaANBSXdeRfvGgb0+8JrovC2UAAFCTmDoIAFHCUwmzi6TW7ULxytKS74P4y7earlYIAABqEiNa\nALCijr3fx6MOlSbfH90XAADUBAotAFhRa2zs4yULpYfPiO7bUMdUQgAAagCFFgDE0eR5W3lWEdzl\nzKbtutnFzQsAAJQlCi0ASFLfP0iH3ODbIw+M7stCGQAAVC0KLQBI2uYH+bjuax+7ZaXPBQAApIJC\nCwAK0WQqYYfoflsc7uPRxzCVEACAGkGhBQDFtO9ffTz1OWnEXrn7MY0QAICqwnO0AGBFhZ+3JUUX\nSqttJM2Z4tvOFTcvAACQGka0AKBUho6TtjrSt584N7ovy8ADAFDRKLQAoFTadpAOuMK33x6TXi4A\nAKComDoIAEkLTyXMHo0y83GbDtLi+iCePqk0uQEAgJJgRAsA0vLz0T6+++jofiyUAQBAxaHQAoC0\ndN881AgtjPHZyyVPBQAAJItCCwCKqcnztjpG9zviNh/fdaT0/GXRfVkoAwCAskehBQDlYL1dfeyW\nSc//I71cAADACqPQAoByc+BVwUIZjT59Ibov928BAFCWWHUQAEop34qEjbY6QuqxjXTTHkH7vqGl\nyQ0AACSGES0AKEerbxRqhBbKmPtFyVMBAAAtR6EFAOXugCt9fEt/6Z17o/uyUAYAAGWBQgsA0tJk\nRcIO0f023d/Hi+ZLj/yq+LkBAIAVQqEFAJVkjz9IK4Vur/3kmei+LJQBAEBqWAwDAMpBeJEMKbow\n+umZ0oZ9pVv3CdoPnlj01AAAQMsxogUAlWatrXNvn/FGafMAAACRKLQAoJIdNcrHIw+W/ntDdF8W\nygAAoGSYOggA5SjO87YkqdfOPl62RHrqT8XNCwAAxMKIFgBUi33/JrVu79sfP5FeLgAA1DhGtACg\n3MVdKKP3IGnt7aVb+gXtf58Sfc6GeuninkE8fEbwMwAAQGIY0QKAatJ9Ux9b6K/4af8tfS4AANQw\nCi0AqFZHj/bxHUdIL18T3ZeFMgAASBRTBwGg0sRdKGPt7XzslkrPXFzcvAAAwA8Y0QKAWrDf35su\nlDFrcnq5AABQAxjRAoBKFnehjG2PlXr2lm7ZM2jfPTD6nCyUAQDACmNECwBqRffNfbxkkY8Xf1/6\nXAAAqHIUWgBQi3Y63ccj9pKmvZK7X0M9i2QAAFAACi0AqCaNUwkvmCu17RDdb9ezfPzNJ9KoQ4uf\nGwAANYRCCwBq3dYDJTnfnvNJaqkAAFAtWAwDAKpV3IUyDrhc2vxgafQxQfuOPKNbDXUslAEAQAyM\naAEApA36+nhxfSheWOpMAACoChRaAFAr4t6/tdOpPs47usVCGQAARKHQAgA0tevZPp4zxcduWf7j\nGuoovAAAyKDQAgBE+/GePh59jLTg6/RyAQCgglBoAUAtajKNMM+CFgdf7+Opz0kjBhQ/NwAAqgCF\nFgAgmpmPV99YqvvKt/NND+T+LQBAjaPQAgDEWyhj6GPSNkf79i39S5MbAAAViEILABBPmw7S/pf5\ndv1sH3/0uOTc8scAAFCjKLQAAIXpd56P7xsq3XFYdF9WJAQA1BgKLQBAU3Gft7XdYB+3bi9N+69v\nL/6+ePkBAFABKLQAACvuly9IWw/07buOjO7LQhkAgBrQOu0EAABlrHF0q1FUYdSlp3TA5dLbY4L2\n1x8UPzcAAMoYI1oAgOT12MbHL14luWXp5QIAQAootAAAyRt4l4+fvVS6/4ToviyUAQCoQkwdBADE\nF55KmK8oat3Ox63aSh/9p7h5AQBQZhjRAgAU16AHpM49fPv1kenlAgBAiVBoAQAK02QZ+I7R/dbe\nThoaGtF6+k/RfVmREABQJSi0AADF12kNH7du7+MPx5U+FwAASoBCCwCQjLgPOh78iI/vP156+qLo\nviyUAQCoUBRaAIDSWnX9pu2J16eTBwAARUShBQBIz6E3Nr2/65Ono/ty/xYAoIKwvDsAIHnhZeCl\n6MJoswOl7ptJN+4etB88qfi5AQBQAoxoAQDStdqPc2+f9W5p8wAAIEEUWgCA8nHEv3x82/7SKzfl\n7sc0QgBAmWPqIACg+MJTCfMVRuvt5uOlDdKTFxQ1LQAAioURLQBAedrn0qbP3HptRHRfloEHAJQZ\nRrQAAKUVd6GM7QZLvXaWbtojaE+4pPi5AQCQEEa0AADla/WNfNy+m48pugAAZY5CCwBQGYaN93He\naYQslAEASB+FFgAgXY1TCS+YK7XtEN2vw6qheDUfv3iVtGxJ8fIDAKAAFFoAgMoz5DEfP3upNOrQ\n6L4slAEASAGLYQAAykfchTLCI1rtOkvTJ/m2c8XJDQCAFmBECwBQ2U54SvrRrr59/7Dovty/BQAo\nEQotAED5inP/Vtd1pGNG+/anz/uY0S0AQEootAAAlc9C/5ytuaWPRx8jffV+9HHcvwUAKBIKLQBA\nZYi7OuEx9/p46rPSiAHFzw0AgCwUWgCA6tKqjY83PUByy3z7nXuX79+I+7cAAAli1UEAQOWJuzrh\nYTdJ0/7rl39//Jzi5wYAgBjRAgBUu3V39HHr9j6eeH3+Bx1z/xYAYAVQaAEAaseQsT5++iLp9gPT\nywUAUNWYOggAqHzhqYT5Rp+6/cjH7btKX77l24sXFic3AEBNYkQLAFCbTpogbbK/b9++X3RfFsoA\nALQQhRYAoLo0WQa+Y3S/TmtKh9/s29997uO6OcXLDwBQEyi0AACQpN6DfXzT7tJbo6P7slAGAKAZ\nFFoAgOoW90HH/c/z8fffSmPPLn5uAICqRaEFAEC2fuc2XQr+paui+3L/FgAgB1YdBADUjrgPOt7p\nVGnTA6Trdgra+QotAAByYEQLAIBcuvXycYfVfPzc36VlS3Mfw+gWACCDES0AQO2K+/ytYeOla/oE\n8QuXS9NeLX5uAICKxogWAADNad/Vx206SJ+94NvOlT4fAEDZo9ACAKAlho6TVt/Et+8/Provy8AD\nQM2i0AIAQIr/oOPVN5KGjvXtT5/z8aL50cdx/xYA1BQKLQAAWqpN6HlcG/zMxyP2LH0uAICyRKEF\nAEAucR90fNjNPq6f4+Mv385/fqYVAkBVo9ACACApe/zBx7ftLz19UXq5AABSRaEFAEBz4t6/tcMJ\nPnZLpYnXxzs/928BQNWh0AIAoBiOvE3q3MO3HzottVQAAKVHoQUAQDFstJd00gTfnvK4jxm1AoCq\nR6EFAEBLxV0oo11nH/fa2cc37CZNvj/6OBbKAICKR6EFAEApHDnSxwtmSg+fkV4uAICio9ACAGBF\nxB3dMvNx33OaPotr3O+jj2OhDACoSBRaAACU2i5nSL98wbffDU0jXLq49PkAABJHoQUAQFLiLgMv\nSZ3X8vFa2/j49gOlrz+KPo77twCgIlBoAQCQtmPv9fHMt6Vb904vFwBAIsqi0DKzU81sqpktNLNJ\nZrZbnr5DzMzleLWP6H9OZv8VxXsHAADkEPv+rdA/xxv2k5Yu8u3Z+Ua3uH8LAMpV6oWWmQ2UdIWk\nv0jqLel5SePMrFeew+ZJ6hF+OecW5jj3DpJOkvR20nkDAFAUR42S9vu7b488OL1cAAAFS73QknS2\npBHOuVucc+87586SNE3SKXmOcc65meFXdgcz6yTpTkknSvq2KJkDABBX3Pu3zKRtj/XtZaHFMb56\nL//P4P4tACgbqRZaZtZWUh9J47N2jZe0S55DO5nZZ2b2hZk9ama9c/S5VtJY59yTMfJoZ2ZdGl+S\nOjd3DAAAJXHQtT6+7QBp8gPp5QIAiK11yj9/dUmtJM3K2j5L0lrLd5ckfSBpiKR3JHWR9CtJL5rZ\nNs65KZJkZkdL2k7SDjHzOEfS+S3KHACAFdE4wiXlH33aOLQwxpKF0sOnFzcvAEAiymHqoCS5rLbl\n2BZ0dG6ic+4O59xbzrnnJR0l6SNJZ0iSma0r6UpJg3LdtxXhEkldQ691Wv4WAAAosp+e1bQ9/fXo\nviyUAQCpSntEEPt2NAAAIABJREFUa7akpVp+9Kq7lh/lysk5t8zMXpW0UWZTn8zxk8yssVsrSbub\n2emS2jnnlmadY5GkH5Z4Ch0HAEDxhUe3pOjCaI/fST22ke4bGrTvPqr4uQEACpLqiJZzrkHSJEkD\nsnYNkPRSnHNYUBVtK+nLzKanJG2V2db4ek3BwhjbZhdZAABUlI0jnrH11t2SW5Z7H6NbAFByaY9o\nSdJlkkaZ2WuSXlawHHsvSTdIkpmNlDTdOXdOpn2+pImSpii4R+tMBcXUaZLknJsvaXL4B5hZnaQ5\nzrkm2wEAKEtx79/6+Rjp7oFBPPY3QbEFACgLqRdazrkxZraapPMUPBNrsqT9nHOfZbr0khT+FV03\nSTcpmG44V9IbknZ3zr1SuqwBACgDa/fxcZsO0hev+XbDgujjGuqki3sG8fAZ+ZebBwAUJPVCS5Kc\nc9dJui5iX9+s9q8l/bqF5+/bbCcAACrZyc9KT5wvffhY0L41YoohAKAkymXVQQAAkEvcBx13WVs6\n/BbfXhBaU+q7z4uXHwAgJwotAACq0U6h523dtm90PxbKAICioNACAKAa7Rp65taSRT6e+nzpcwGA\nGlQW92gBAICY4q5IGLb/5dLYzO3Ndw+UNj8kui8LZQBAIhjRAgCg2m12oI9tJem9f/t21LO3JKYV\nAsAKoNACAKBSxV0oI2zoY1LP3r59z+Di5AYANY5CCwCAWrLW1tLgh3172kQfO5f/2IY6RrgAICYK\nLQAAqkWTEa4O0f1WauXj8EOPRx4kTZ9UvPwAoIZQaAEAUMsG3uXj6ZOk2w+M7gsAiI1CCwCAalTI\n6NY2R0sy337u79HHsVAGAORFoQUAAAL7XyYd/7hvv3Kjj5ctKX0+AFDBKLQAAKh2LVmdcM0tfbzK\n+j6+ZYD0vwnRx7FQBgA0QaEFAAByG/KYj2d/KI0+Jr1cAKDCUGgBAFBr4t6/1aqNj39ysrRSqP3s\n36KP4/4tAKDQAgAAMex5vnTSBN9+9SYfN/f8LQCoQRRaAADUspbcv7Vq6J6tLuv4eMwg6Zup0cdx\n/xaAGkShBQAAWm7oOB//7xnp5n7p5QIAZah12gkAAIAy0jjCJeUffWqzso/X312a+pxv512dsF66\nuGcQD5/R/CgaAFQoRrQAAMCKOfpu6dDQM7ceOCG9XACgTFBoAQCA3OLev2UmbXZgqN3Kxy9dLS1Z\nVLwcAaBMUWgBAIBkDX7YxxMukW7pn7sfy8ADqGLcowUAAOKJe//WGpv4uOMa0jf/8+15M4qTGwCU\nGUa0AABA8Zz8vLTDib59617RfVkGHkAVodACAAAtF/f+rfZdpAEX+vaShT6ePin6OKYVAqhwFFoA\nAKB09vunj+8+Or08AKDIKLQAAMCKazLC1SG63+YHhxrOhx8/JTm3XPcfMK0QQIWh0AIAAOk4bISP\n7/mFNPrn6eUCAAlj1UEAAJCs8OqEUvQI1AZ7+LhVW2nqc75d93X0+RvqpYt7BvHwGfnvEQOAlDCi\nBQAA0nfyc00fehz17C0AqBAUWgAAoLji3L/VrZd06I2+vbjex5Nua7paYTbu3wJQhii0AABA+Tng\nCh8/Ply6dqf0cgGAAlBoAQCA0om7OuGmB/i4y9pS3Ve+/frt0cfx/C0AZYJCCwAAlLdTXpT2Dz1/\n6+mLfOyWlT4fAIiBQgsAAKSjyehWnpUDW7WVtgkt/d5pTR+POkyaPaV4OQJAgSi0AABAZTn+KR9/\n8Yo0YkB0XxbKAJASnqMFAADKQ/j5W/mKojbtfbxhP+mTp337f89GH8fztwCUECNaAACgch01Sjr4\nWt9+4Pj0cgGAEAotAABQfuLev2UmbXGob6/UxsdPXiAtnBt9LNMKARQRhRYAAKgeQx7z8Ss3Sdf/\nNL1cANQ07tECAADlL+79W6uu7+PVNpLmhFYk/Hxi9HHcvwUgYYxoAQCAyhJ3WuEJT0oD/uTb9wwq\nfm4AkEGhBQAAqlOrNtIOJ/i2hb72TPhr9MhYQz33bgFYYUwdBAAAlS3utMLBj0i37x/EL10pvT2m\n+LkBqFmMaAEAgNqwxiY+7vYjacFM3/7yzejjWJ0QQAEotAAAQPWIe//WSc9Ifc/x7TuPKH5uAGoK\nhRYAAKg9rdtLu5yRe9/E66KP4/4tADFRaAEAgOrVZISrQ3S/Yx/w8QuX+di54uUGoKpRaAEAAPTY\n2sed1vTxvcdJ82ZEH8f9WwAiUGgBAIDaEPf+rWFP+PjjJ6Wbf1b83ABUHQotAACAsPAUw57bSYvm\n+/bc6dHHcf8WgBAKLQAAUJvi3L81+CGp/3m+fdt+8c/PtEKgplFoAQAARFmplbTjL317cahgmvVu\n6fMBUDFap50AAABA6hpHt6T8o0/9zpOe/lMQj9hL2vzgeOdvqJcu7hnEw2fkv0cMQFVgRAsAACCu\n7QaHGk5679++uWBW/PMwrRCoehRaAAAAhRj2uLRhP9++pX96uQAoOxRaAAAAYXGXgV9rK2ngHb69\nZKGPX7o6mC4YB6sVAlWJQgsAACAJh97k4wmXSNfvkl4uAFLHYhgAAAD5xF0oIzyNsFsv6bvPffv9\nh+P/vIY6Fs4AqgAjWgAAAEk7+Tlpr7/49tizfexc6fMBUHIUWgAAAElr1Vbafqhvt+3k4zsOl6ZP\nince7t8CKhaFFgAAQFxxF8rIduIEH0+bKN1+YOKpASgvFFoAAADFtnI3H289ULLQV7AXLot3Dka3\ngIpCoQUAAFCoJiNcHeIdc8Dl0vFP+vbE63zM/VtA1aDQAgAAKLXum/q4y9o+vvtoafaUeOdoqGOE\nCyhjFFoAAABJKPT+raH/8fGnz0u39E8+NwAlR6EFAACQpjYr+3ijAdKyJb4dnlaYD/dvAWWHBxYD\nAAAUQ9wHHYcdebv08ZPSPYODdnihjKUNyeYHoKgY0QIAACgnP97Tx6us7+OWLAnP/VtA6ii0AAAA\niq3g+7fG+fibT3w894vkcgNQFBRaAAAA5Wql0F0evQf7+IZdpScvjHcO7t8CUkGhBQAAUGqFPH+r\n/3k+XtogvXKjby/+Ptn8AKwwCi0AAIBKc/RdUvfNfXvEntF9s3H/FlASFFoAAABpKuT+rQ36SseP\n9+0Fs3z84TjJuSQzBFAACi0AAIBKZKGvcT8718f3Hy+NPCjeObh/CygaCi0AAIByUsj9W32G+LjN\nytL0Sb49f2ai6QGIh0ILAACgmpzyUtMVCv+1T/xjuX8LSAyFFgAAQLkqZHSr05rSvpf6dsMCH8+e\nEv9nM60QWCEUWgAAANWs3x99PGKA9Pw/08sFqCEUWgAAAJWgkNUJJWm743y8tKFpocXqhEDRUGgB\nAADUioOvkzqs5tt3Hh7/WO7fAlqEQgsAAKASFXL/1haHSCc/59sz3/bxO/dJy5bEOw/3bwHNotAC\nAACodC2ZVrjyKj7e6VQfP3KmdP1Pi5MfUIMotAAAAGrVrmf7uMNq0txpvv3aiHjnYHQLyIlCCwAA\noNoUMq3wtP9Ke/3Ztydc4uMlC5PND6gBFFoAAACQ2nSQth/m2916+fjm/tInz8Q7D4tmAJIotAAA\nAKpbocvCDxvv42+nSmOOTT43oIpRaAEAAGB5K7X28U9OlqyVbz99UbxzcP8WahiFFgAAAPLb83zp\n+NAI1+u3+7ihvvT5ABWgdfNdAAAAUDUapxJKLRtl6r6Zj9fcQpr1bhCP6B//HA110sU9g3j4jJZN\nZQQqDCNaAAAAtarQ+7cGPejjuq99PPl+HnoMZFBoAQAAoGUs9BWy33k+fvgM6cbdS58PUIYotAAA\nABAo5Plb2w328cqrSt9+6tvvPrhc90gsC48qQ6EFAACAZJz2itT/fN8e91sfOxf/PEwrRBWg0AIA\nAMDyCrl/q20HaceTfbtdFx+PPEj67OVkcwTKGIUWAAAAmlfItMITn/Hx9EnSnYcX9rOZVogKRKEF\nAACA4mjf1cfbHdf0Ich3H136fIASotACAABA8e1ziXTyc749/TUfv3W3tHRx6XMCiohCCwAAAC1T\nyDRCSVplPR/veIqPx/5GunG3eOdgoQxUCAotAAAAFK7Qhx7v9hsfd1hd+u5z335rdHL5ASmh0AIA\nAEC6Tpso7XmBbz9xro+XLMp/LAtloExRaAEAACA5hUwrbNNB+slJvt2xu4+v30V67V/xzsO0QpQR\nCi0AAACUl/Cy8PO/lMb/P99etjTeOSi6kDIKLQAAABRHofdvtW7n470vljr38O07DkkuP6CIKLQA\nAABQvvoMkU55ybe/et/HM98ueTpAXK2b7wIAAAAkoHGES2rZdL7wCNc2x0hv3RXEt+4jrb9HvHM0\n1EkX9wzi4TNaNsIGFIBCCwAAAKUXLrqk+IXXgD/5QstaSVOf9fumjE8uP2AFMXUQAAAAlemUl6Q+\nQ337oVN9vHRx9HEslIESoNACAABA+gpZFr7butLef/Htdl18fOte8X82z+JCEVBoAQAAoDqc/JyP\n507z8YfjSp8Lah73aAEAAKC8FHr/VttOPu47XJpwcRDff7y06QHxztFQz6IZSAQjWgAAAChvhUwr\n3H6Yj62V9MGjvt1QH/9nM60QBaLQAgAAQHUbNk5aayvfvnHX9HJBzSiLQsvMTjWzqWa20Mwmmdlu\nefoOMTOX49U+1OccM3vVzOab2Vdm9m8z26Q07wYAAABF02R0K+a0vjW3lIaM9e1F83z80GnS1x/G\nOw+rFaIFUi+0zGygpCsk/UVSb0nPSxpnZr3yHDZPUo/wyzm3MLR/D0nXStpJ0gAF96KNNzMm2QIA\nAFSTuNMKVwotTXDYLT5+90Hp5p8VLz/UrNQLLUlnSxrhnLvFOfe+c+4sSdMknZLnGOecmxl+Ze3c\nxzl3m3PuXefcW5KGSuolqU/R3gUAAAAqwwZ9fbzJ/k33PXBi/PNw/xbySLXQMrO2Coqf7Md4j5e0\nS55DO5nZZ2b2hZk9ama9m/lRXTN/fhORRzsz69L4ktQ5Tv4AAAAoI4UsmnH4zdKJz/j2/0LxF68m\nmx9qStojWqtLaiVpVtb2WZLWijjmA0lDJB0k6eeSFkp60cw2ytXZzEzSZZJecM5NjjjnOZLmhl5f\nxH8LAAAAqGhrhG7l3/IIH488WBozKN45uH8LWcrlOVouq205tgUdnZsoaeIPHc1elPS6pDMknZnj\nkGskbS0p3/Iylygoxhp1FsUWAABA5Sr0WVz7XCpNvi+IrZX0ydN+39cfJJcfql7aI1qzJS3V8qNX\n3bX8KFdOzrllkl6VtNyIlpldrWDk62fOucjCyTm3yDk3r/ElaX7M/AEAAFCtfvm8tNWRvn17Cx56\nzOhWzUu10HLONUiapGBlwLABkl6Kc47M1MBtJX0Z3mZm10g6TFI/59zUZDIGAABARSrk/q1V1pMO\nvDL3vofPlL7hKyailcPUwcskjTKz1yS9LOkkBSsE3iBJZjZS0nTn3DmZ9vkKpg5OkdRFwXTBbSWd\nFjrntZKOkXSwpPlm1jhiNtc5933R3xEAAADKV6HTCo8bK92eWaVw8n3B0vBxNNRJF/cM4uEz4j//\nCxUt9ULLOTfGzFaTdJ6CZ2JNlrSfc+6zTJdekpaFDukm6SYF0w3nSnpD0u7OuVdCfRqXhp+Q9eOG\nSrotyfwBAABQI8KLZmzYX/rkKd9+5uLS54OylnqhJUnOueskXRexr29W+9eSft3M+Syx5AAAAFDd\nwiNccUe3Bo6SvnhNGnlQ0J50q9/XUB99XEM9o1s1Iu3FMAAAAIDKtM72Pl5jMx+P6F/6XFB2KLQA\nAACARk0WzWjBaNPgh3xc97WP37lXWro4+riGOlYorFIUWgAAAMCKstDX6n7n+fiRX0nX71z6fJA6\nCi0AAAAgSiHLwm832Mcd15DmzfDtl66KPo7nb1UVCi0AAAAgjkKmFZ72X2nfv/l2uNBaMCvZ/FBW\nKLQAAACAYmndXuo9yLfX3MLH1+8iTbg0+lju36poFFoAAABAIQqZVjjo3z5e/H3TEa7FC6OPY1ph\nxaHQAgAAAFZU3KLLQo97PeJWafWNfZtl4asKhRYAAACQho33kU54yrfD92y9NVpasij6WKYVlj0K\nLQAAACBJLVk0Y6VWPu473Mdjz5aui7ksPNMKyxKFFgAAAFAOth/m405rSQtm+vbrI0ufD1ZI67QT\nAAAAAKpa4wiXFH/E6bSJ0rsPSo/+Omg//Se/zy1r+oDkbA110sU9g3j4jPhL0SNRjGgBAAAApRJ3\nWmGrttLWA327w2o+vqmv9OZdRUsRyaDQAgAAAMpdeNGMOR9Lj/2fbzfURx/H/VupodACAAAA0hJ3\nWfi2nXzc/zypcw/fvrlv0dJD4Si0AAAAgEqy4y+lUyf69vff+PiFy6X6b5Y/RmJ0q8QotAAAAIBy\n0JJl4Vu18fHel/r4ub9L1+4Q7+fxLK6iotACAAAAylHcaYVbHeHjNbeQFn/v24+eVbz8kBeFFgAA\nAFAtho2Xfj7atz941MfTJ0Ufx7TCxPEcLQAAAKDchZ/FJUUXQ2bS+rv79mYHSe8/HMR3D8x9TC48\ni2uFMaIFAAAAVKv9L/PxSqExljuOkKaML30+NYQRLQAAAKDShEe44k71G/aEdMvPgvjzl4JXo6WL\no49rqGd0qwCMaAEAAAC1oNu6Pt7pVKldF9++da/452G1wlgotAAAAIBK1pJl4Rv1O1c6I7Q4xtxp\nPn7rbmnJwmRzrEEUWgAAAEA1ibssfLgo2+23Ph77G+man8T7WaxWGIlCCwAAAKh1O57s4y49pfrZ\nvj327NLnUwUotAAAAIBqFXd0K+yUl6VDrvftxuXhJentMU0fiJyN+7d+QKEFAAAA1IK493K1aiNt\nfrBvb3G4jx/9tXTN9vF+Xo1PK6TQAgAAABBt37/6uOs60vff+vYzF5c+nwrBc7QAAACAWlTIs7hO\neVn6+EnpvqFBe9Ktfl/dHKnjasnmWMEotAAAAIBaFy66pOjCa6VW0sZ7+/aaW0iz3g3ia7ZvOuUw\nW0NdTT34mKmDAAAAAAoz6EEfL10kvXOPb099rvT5lBEKLQAAAABNxV2t0ELlxJCx0pahhTPuH+Zj\n55oeVwMLZVBoAQAAAFhxPXtLB13t261X9vFdR0lff1T6nFJEoQUAAAAgWtxl4bOdHJo6+NmL0og9\nc/er0tEtFsMAAAAAEF/c1QpXXsXHG+8tffS4b0+4tDi5lRFGtAAAAAAU1xH/ko4a5duv3eLjOR83\n7dtQVxUjXIxoAQAAAChM3GXhJenH/X28zg7SF68G8b/2KU5uKWNECwAAAEAy4q5WePTdubePOkz6\n34SipFZqFFoAAAAA0jM0dO/WtInS6GN82y0rfT4JodACAAAAkLy4qxWutqGPdzhRat3et+dOL15+\nRUahBQAAAKD44kwrHHChdNqrvt1t3dLkVgQUWgAAAADKR8fV0s4gEaw6CAAAAKC04j6Lq4JRaAEA\nAABIT0uWiK8gFFoAAAAAykd24VWhuEcLAAAAABJGoQUAAAAACaPQAgAAAICEUWgBAAAAQMIotAAA\nAAAgYRRaAAAAAJAwCi0AAAAASBiFFgAAAAAkjEILAAAAABJGoQUAAAAACaPQAgAAAICEUWgBAAAA\nQMIotAAAAAAgYRRaAAAAAJAwCi0AAAAASBiFFgAAAAAkjEILAAAAABJGoQUAAAAACaPQAgAAAICE\nUWgBAAAAQMIotAAAAAAgYRRaAAAAAJAwCi0AAAAASBiFFgAAAAAkjEILAAAAABJGoQUAAAAACaPQ\nAgAAAICEUWgBAAAAQMIotAAAAAAgYRRaAAAAAJAwCi0AAAAASBiFFgAAAAAkjEILAAAAABLWOu0E\nytm8efPSTgEAAABAigqtCcw5l3Aqlc/M1pb0Rdp5AAAAACgb6zjnpsftTKGVg5mZpJ6S5qedi6TO\nCoq+dVQe+VQTrm1xcF2Lg+taPFzb4uC6FgfXtXi4tsVRLde1s6QZrgXFE1MHc8hcwNjVajEFNZ8k\nab5zjrmMCeLaFgfXtTi4rsXDtS0OrmtxcF2Lh2tbHFV0XVucO4thAAAAAEDCKLQAAAAAIGEUWuVv\nkaQLM38iWVzb4uC6FgfXtXi4tsXBdS0OrmvxcG2Lo2avK4thAAAAAEDCGNECAAAAgIRRaAEAAABA\nwii0AAAAACBhFFoAAAAAkDAKrTJhZheYmct6zQztt0yfGWb2vZlNMLMt0sy5EpjZpzmuqzOzazP7\nJ+TYNzrtvMuNme1uZo9kPn/OzA7J2t/s59PMVjGzUWY2N/MaZWbdSvtOyk++a2tmbczsr2b2jpnV\nZfqMNLOeWefI9Tm/tPTvpnzE+MzeluOaTczq087Mrjaz2Znr/7CZrVPad1JeYlzXXH/fOjP7bagP\nn9csZnaOmb1qZvPN7Csz+7eZbZLVp9nPo5n1yvz3qcv0u8rM2pb23ZSX5q6tma2aua4fmlm9mX2e\nuW5ds86T63P9y9K/o/IQ8zPb7Hesav9uQKFVXt6V1CP02iq073eSzpZ0uqQdJM2U9ISZdS51khVm\nBzW9pgMy2+8N9bk5q8/JpUywQnSU9JaCz18ucT6fd0naVtI+mde2kkYVK+EKku/adpC0naSLMn8e\nJmljSQ/n6Huemn6O/1yMZCtIc59ZSfqPml6z/bL2XyHpUElHS9pVUidJj5pZq8SzrRzNXdceWa9h\nkpyk+7P68Xltag9J10raScG/U60ljTezjqE+eT+PmT/HKvhvtGum3+GS/lmi91Cumru2PTOv/1Pw\nvWuIgn+jRuQ411A1/dzeXszEy1ycz6zU/Hes6v5u4JzjVQYvSRdIejNin0n6UtLvQ9vaSfpO0slp\n515JLwX/UH0s/2iDCZKuSDuvSnop+NJ0SKjd7OdT0maZ43YM9dkps22TtN9Tubyyr21Enx0y/XqF\ntn0q6ay08y/XV67rKuk2Sf/Oc0xXSQ2SBoa29ZS0VNLeab+ncnjF/Lz+W9JTWdv4vDZ/bdfIXN/d\nM+1mP4+S9s20e4b6HC1poaQuab+ncnllX9uIPkcqeOZT69C2Zj/vtfzKdV2b+45VC98NGNEqLxtl\npmNMNbPRZrZBZvv6ktaSNL6xo3NukaRnJe2SQp4VKTN9YpCkW13m/+aMYzNTLN41s38wSthicT6f\nO0ua65z7b6jPRElzxWe4pboq+Efou6ztvzezOWb2ppn9v1qfLhRT38yUl4/M7GYz6x7a10dSGzX9\nXM+QNFl8ZmMxszUl7a/cIwN8XvNrnLb2TebPOJ/HnSVNzmxv9LiCX3z1KWq2lSX72kb1meecW5K1\n/ZrM94VXzeyXZsb3aC/quub7jlX13w1ap50AfvBfSYMlfSRpTUnnSnrJgvtc1sr0mZV1zCxJPypZ\nhpXvEEndFPwmu9GdkqYqmOq2paRLJG0jP8UQzYvz+VxL0lc5jv0qdDyaYWbtJV0q6S7n3LzQrisl\nvS7pW0k/UfA5Xl/SCSVPsnKMUzCF+DMF1+oiSU+bWZ/MLwrWktTgnPs267hZ4jMb13GS5kt6IGs7\nn9c8zMwkXSbpBefc5MzmOJ/HtZT197Bz7lszaxCfWUmR1za7z2qS/ijpxqxdf5T0lKTvJfVXMCVz\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f2179248ef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('my_preds2_3_255.csv')  ###之前猜测最佳estimators为255，其实是251\n",
    "\n",
    "cvresult = cvresult.iloc[50:]\n",
    "# plot\n",
    "test_means = cvresult['test-mlogloss-mean']\n",
    "test_stds = cvresult['test-mlogloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-mlogloss-mean']\n",
    "train_stds = cvresult['train-mlogloss-std'] \n",
    "\n",
    "x_axis = range(50,cvresult.shape[0]+50)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail2_3_255.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
